0

这是我的索引方法,它试图访问 2 个不同的模型,即会话和电子邮件:

def index
    user_session = Session.find_by_user_id(user_id)

if !user_session.blank?
  if setting_orig = GlobalSetting.find_by_settings_session_id(user_session.id)
      @setting = setting_orig.dup
  end

else
  @setting = GlobalSetting.first.dup
end 

结尾

但是,当我尝试创建此表单时:

<%= form_for(@setting) do |f| %>
 <%= f.text_field :username %>
 <%= f.password_field :password %>
<%= f.submit "Submit" %>

我看到这个错误,NilClass:Class 的未定义方法'model_name'。如何使它工作,有什么建议吗?

4

1 回答 1

2

Unixmonkey 有正确的想法,查看你的堆栈跟踪并找出错误来自哪里。

此外,您的语句逻辑中有一个漏洞。如果 user_session 不为空(有人已登录)但您找不到 setting_session_id 等于 user_session.id 的电子邮件(用户可能没有电子邮件?)然后@setting 永远不会被声明,因此您将运行进入你的错误。

def index
  user_session = Session.find_by_user_id(user_id)

  if !user_session.blank? AND setting_orig = GlobalSetting.find_by_settings_session_id(user_session.id)
    @setting = setting_orig.dup
  else
    @setting = GlobalSetting.first.dup
  end 
end
于 2012-09-14T22:49:00.287 回答