Cells と Devise を使用して、Devise :current_#{mapping} (current_user など) にアクセスしようとすると、未定義のエラーとしてリクエストが返されます:
ActionView::Template::Error (未定義のローカル変数または # のメソッド「リクエスト」)
Devise Helpers メソッドを含めましたが、Cell::Base には存在しない Web コンテキスト リクエストにアクセスします。私のセルコントローラーは次のようになります。
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 Controller からリクエストやその他の重要なビットにアクセスする方法を示すはずのこのスニペットを見つけましたが、Devise を Cells Controller で意図したとおりに動作させる方法は少し不明です。たとえば、Cells::Base はリクエストを作成し、Devise が必要とするものは何でも利用可能にします
Cells のバージョンに問題があるのではないかと思いますが、3.8.3 を使用しています。(最新)これは、ここで示されているように、 「コントローラーはスリムでなければならない」という項目で示されている「セッション」も利用できないためだと思う理由です。Cell::Base Controller からセッションにアクセスできません。これが以前は Ruby 2.x でのみ可能であったかどうかはわかりませんが、現在は 3.x では不可能です。(この記事ではバージョンについて言及していませんが、コメントは 2010 年後半に投稿されたものだと思います)
class CartCell < Cell::Base
def display
@user = session[:user]
render
end
この問題以外に、私はセルを掘り下げています。jQuery AJAXを使用してJSONをグラフ化するためにヤンクする分離ウィジェットに使用しています。
どんな助けでも大歓迎です。現在ログインしている Devise ユーザーの詳細を知りたい!