2012-04-14 1 views
0

с использованием клеток и Завещания, при попытке получить доступ к DEViSE: ток _ # {} отображение (например, CURRENT_USER) Я получаю запрос как неопределенные ошибки:Rails Клетки с Завещания и доступ запроса и сеанса

ActionView :: Template :: Error (неопределенная локальная переменная или метод `запрос 'для #)

Я включил методы Помощники Devise, но они получают доступ к запросу веб-контекста, которого нет в 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 нормальный контроллер, само имеет запрос. Внутри Cells :: Base Controller запрос отсутствует.

Я нашел этот фрагмент here, который должен показать, как получить доступ к запросу и другим важным битам из контроллера Cells, но немного неясно, как просто заставить Devise работать, как предполагалось, в контроллере Cells. например Cells :: Base делает запрос и все, что еще нужно для разработки.

Я думаю, что что-то может быть неправильно в моей версии Cells, но я использую 3.8.3. (последнее) Причина, по которой я думаю, это потому, что у меня также нет «сеанса», как показано here по пункту №4 «Контроллеры должны быть slim». Я не могу получить доступ к сеансу из Cell :: Base Controller. Я не знаю, было ли это возможно только с Ruby 2.x ранее, и теперь с 3.x это невозможно. (Статья не упоминает о версии, но я вижу, что комментарии были опубликованы концом 2010)

class CartCell < Cell::Base 
    def display 
    @user = session[:user] 

    render 
end 

Помимо этого вопроса, я супер рытья клетки. Я использую его для изолированных виджетов, которые используют jQuery AJAX для извлечения JSON из них для целей графического отображения.

Любая помощь будет оценена по достоинству. Мне нужно знать подробности о текущем пользователе Devise, который вошел в систему!

ответ

1

Как вы уже указывали сами :-) просто вывести ячейку из Cell :: Rails, и все будет работать нормально.

+0

Правда. Переключение на Cells :: Rails устраняет необходимость разработки для сеанса. Я дам вам ответ, но обратите внимание, что если вы пытаетесь использовать Cell :: Base.render_cell_for в routes.rb, вы получите ошибки аргументов, которые я есть, но я не вызвал их вопрос, поэтому я не буду тащить это. https://github.com/apotonick/cells/issues/106 – garlicman