nil class - NoMethod错误,表单提交。在erb中使用form_tag,Ruby on Rails?

时间:2012-08-20 23:08:33

标签: ruby-on-rails ruby-on-rails-3 erb

-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

1 个答案:

答案 0 :(得分:0)

尝试使用不带下划线的params[:mailsetting]。该模型名为MailSetting,因此我认为这是正确的。 NoMethod错误意味着没有生成的mail_setting名称辅助方法,因为你已经创建了模型,可能是因为拼写错误。

我建议在命名资源时不要使用下划线/破折号,因为它只会混淆语法。