【发布时间】:2014-03-14 17:43:53
【问题描述】:
我一直在搞乱我的ApplicationController 并且不知何故弄坏了一些东西。我的助手ApplicationHelper::current_settings 序列化@user 以便我的JS 应用可以加载当前用户的数据。但是突然:
undefined method `id' for nil:NilClass
at `@user.id` in app/helpers/application_helper.rb, line 5
但是,在我的 better_errors 控制台中,我可以看到该变量是在控制器上设置的,只是在当前上下文中无法访问:
>> @user
=> nil
>> controller.instance_variable_get("@user")
=> #<Person id: 1, ...>
>> instance_variable_get("@user")
=> nil
我以同样的方式设置@organization,它就在那里:
>> @organization
=> #<Organization id: 1 ... >
但由于某种原因,没有@user 的迹象!
这是助手:
module ApplicationHelper
def current_settings
{
person: {
id: @user.id,
name: @user.to_s
}
}.to_json.html_safe
end
end
在控制器中,它就像:
before_filter :load_user
def load_user
@user = Person.where(some_query).first
end
有什么想法吗??谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 actioncontroller