0

-Form_html.erb、routes.rb、コントローラー内のcreateメソッドは以下の通りです。しかし、フォームの送信時に、params[:mail_setting] を使用した瞬間に nil クラス エラーが発生します。

 routes.rb
-----------
resources :mail_settings

the _form.html.erb
---------
<%= form_tag  '/mail_settings' do %>



    <div class="fieldBlock">
     <%= label_tag :name %>  <%= text_field_tag :name%> </div>

    <div class="fieldBlock">
     <%= label_tag :id%>  <%= text_field_tag :id%> </div>


    <div class="actions fieldBlock">
     <%= submit_tag "Update Settings ", :class => "btn-large btn-success" %>
    </div>


<% end %>

コントローラーの create メソッド:

def create


     @mail_setting = MailSetting.find_by_user_id_and_name(current_user.id,     params[:mail_setting][:name])


        if ! @mail_setting.blank?
            @mail_setting.update_attributes(params[:mail_setting])

        else
            @mail_setting = MailSetting.new(params[:mail_setting])
            @mail_setting.save
            render action: "index"
        end
end
4

1 に答える 1

0

アンダースコアなしで使用してみてくださいparams[:mailsetting]。モデルは MailSetting という名前なので、その通りだと思います。NoMethod エラーは、mail_setting という名前のヘルパー メソッドが生成されていないことを意味します。これは、既にモデルを作成しているため、おそらくスペルが間違っているためです。

文法を混乱させるだけなので、とにかくリソースに名前を付けるときにアンダースコア/ダッシュを使用しないことをお勧めします。

于 2012-08-20T23:45:14.090 に答える