0

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 ユーザーの詳細を知りたい!

4

1 に答える 1

1

あなたがすでに指摘したように ;-) Cell::Rails からセルを派生させるだけで、すべてうまくいきます。

于 2012-04-15T21:12:29.787 に答える