Rails Cells с Devise и доступом к запросу и сеансу
Используя Cells и Devise, при попытке доступа к Devise:current_#{mapping} (например, current_user) я получаю запрос как неопределенные ошибки:
ActionView:: Template:: Error (неопределенная локальная переменная или метод request для #)
Я включил методы Devise Helpers, но они получают доступ к веб-контекстному запросу, которого нет в Cell::Base. Мой контроллер Cell выглядит примерно так:
class ActivityCell < Cell::Base
include Devise::Controllers::Helpers
helper_method :current_user
def display
puts current_user.id # <-- Error starts here
...
end
end
Я использую RubyMine, когда я отлаживаю ситуацию внутри не обычного контроллера Cells, у self есть запрос. Внутри Cells::Base Controller запрос не существует.
Я нашел здесь этот фрагмент, который должен показать, как получить доступ к запросу и другим важным битам из контроллера Cells, но немного неясно, как заставить Devise работать так, как задумано в контроллере Cells. например, Cells:: Base делает запрос и все остальное, что нужно Devise
Я думаю, что-то может быть не так с моей версией Cells, но я использую 3.8.3. (последнее) Причина, по которой я думаю, в том, что у меня также нет доступной "сессии", как показано здесь в пункте № 4 "Контроллеры должны быть тонкими". Я не могу получить доступ к сессии из контроллера Cell::Base. Я не знаю, было ли это возможно раньше только с Ruby 2.x, а теперь с 3.x это невозможно. (в статье не упоминаются версии, но я вижу, что комментарии были опубликованы в конце 2010 г.)
class CartCell < Cell::Base
def display
@user = session[:user]
render
end
Помимо этой проблемы, я супер копаю ячеек. Я использую его для изолированных виджетов, которые используют JQuery AJAX, чтобы извлечь из них JSON для построения графиков.
Любая помощь будет оценена. Мне нужно знать детали о текущем пользователе Devise, который вошел в систему!
1 ответ
Как вы уже указали сами;-) просто извлеките ячейку из Cell::Rails, и все будет работать нормально.