0

使用 Cells 和 Devise,当尝试访问 Devise :current_#{mapping} (如 current_user)时,我收到未定义错误的请求:

ActionView::Template::Error(未定义的局部变量或方法“请求”#)

我已经包含了 Devise Helpers 方法,但是它们访问了 Cell::Base 中不存在的 Web 上下文请求。我的 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::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 用户的详细信息!

4

1 回答 1

1

正如您已经指出的那样;-) 只需从 Cell::Rails 派生单元格,一切都会正常工作。

于 2012-04-15T21:12:29.787 回答