ruby-on-rails – form_for因为升级到rails 3.1而导致错误的参数数(3 for 2)

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – form_for因为升级到rails 3.1而导致错误的参数数(3 for 2)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个form_for在将我的应用程序移植到rails 3.1之前用于工作
<div class="form-Box" style="padding-left:1em;">
  <%
     action = @existing_mass.nil? ? "add_to_power_plant": "update_power_plant_substrate";
     submit_button_label = @existing_mass.nil? ? 'Add': 'Update';
  %>

  <%= form_for :substrate_mass,@substrate_mass,:remote => true,:url => { :action => action,:substrate_id => @substrate_mass.substrate  } do |f| %>
    <div>
      <%= f.label :quantity_per_year,"Quantity" %>
      <%= f.text_field :quantity_per_year,:size => 5,:onclick => 'this.select();',:value => @substrate_mass.quantity_per_year %>
    </div>

    <div class="actions" style="float:right;">
      <%= f.submit submit_button_label %>
    </div>
    <br/> 
  <% end %>
</div>

我花了4个多小时试图弄清楚出了什么问题……绝对有一些我不明白的东西

我得到错误

参数错误(3为2)

请注意,我正在尝试更新不是activerecord对象的变量.它只是一个不存储在数据库中的对象.

希望有人可以帮忙

干杯

解决方法

form_for只需要两个参数,即记录和选项,虽然记录可能是几件事情,包括简单的符号,对象或数组.

尝试删除第一个符号并发送您的对象.如果您的型号不包括ActiveModel :: Naming,您可以通过:as选项设置名称.

<%= form_for @substrate_mass,:as => 'substrate_mass',... %>

可以在这里找到更多的帮助:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

或直接查看来源:
https://github.com/rails/rails/blob/v3.1.0/actionpack/lib/action_view/helpers/form_helper.rb#L353

猜你在找的Ruby相关文章