form_for неверное количество аргументов (3 для 2) с момента обновления до rails 3.1 - PullRequest
10 голосов
/ 23 сентября 2011

эта форма использовалась до того, как я перенес свое приложение на рельсы 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. Это просто объект, который не хранится в базе данных.

Надеюсь, кто-нибудь может помочь.

ура

1 Ответ

11 голосов
/ 23 сентября 2011

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

...