这个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对象的变量。它只是一个未存储在数据库中的对象。
希望有人可以提供帮助。
欢呼声
答案 0 :(得分:11)
form_for
只接受两个参数,record
和options
,尽管记录可能有几个,包括简单的符号,对象或数组。
尝试删除第一个符号并发送您的对象。如果您的模型不包含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