Form_for неправильного количества аргументов (3 для 2) с момента обновления до рельсов 3.1
this 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. Это просто объект, который не хранится в базе данных.
Надеюсь, кто-то может помочь.
веселит
Ответы
Ответ 1
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