form_for自从升级到rails 3.1以来错误的参数数量(3个用于2)

zab*_*mba 10 ruby-on-rails form-for ruby-on-rails-3.1

在将我的应用程序移植到rails 3.1之前,这个form_for曾经工作过

<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>
Run Code Online (Sandbox Code Playgroud)

我花了4个多小时试图弄清楚出了什么问题......我肯定不知道了什么

我收到错误:

错误的参数数量(3个用于2)

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

希望有人能提供帮助.

干杯

num*_*407 11

form_for只有两个参数,recordoptions,虽然记录可能是几个东西,包括一个简单的符号,一个对象或一个数组.

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

<%= form_for @substrate_mass, :as => 'substrate_mass', ... %>
Run Code Online (Sandbox Code Playgroud)

可以在这里找到更多帮助: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