【问题标题】:form_for wrong number of arguments (3 for 2) since upgrade to rails 3.1自升级到 rails 3.1 以来,form_for 参数数量错误(3 代表 2)
【发布时间】:2011-09-23 01:13:03
【问题描述】:

在我将应用程序移植到 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>

我花了 4 个多小时试图找出问题所在......肯定有一些我不明白的地方

我得到错误:

参数数量错误(3 对 2)

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

希望有人可以提供帮助。

干杯

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 form-for


    【解决方案1】:

    form_for 只接受两个参数,recordoptions,尽管记录可能是多个东西,包括简单的符号、对象或数组。

    尝试仅删除第一个符号并发送您的对象。如果您的模型不包含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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多