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 に答える