2011-09-23 13 views
10

este form_for solía trabajar antes de que yo portado mi solicitud a los carriles 3,1form_for número incorrecto de argumentos (3 a 2), ya que la actualización de los carriles de 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> 

He pasado más de 4 horas tratando de averiguar lo que está mal ... definitivamente hay algo que no estoy entendiendo más

me sale el error:

número incorrecto de argumentos (3 a 2)

en cuenta que estoy t para actualizar una variable que no es un objeto activerecord. Es solo un objeto que no está almacenado en la base de datos.

Espero que alguien pueda ayudar.

aplausos

Respuesta

10

form_for sólo toma dos argumentos, el record, y options, aunque registro puede ser varias cosas, incluyendo un símbolo simple, un objeto, o una matriz.

Pruebe simplemente soltando el primer símbolo y enviando su objeto. Si su modelo no incluye ActiveModel::Naming, puede establecer el nombre a través de la opción :as.

<%= form_for @substrate_mass, :as => 'substrate_mass', ... %> 

Más ayuda se pueden encontrar aquí:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

O para ver la fuente directa:
https://github.com/rails/rails/blob/v3.1.0/actionpack/lib/action_view/helpers/form_helper.rb#L353

+0

peto esto funcionó tan bien! Estoy muy muy agradecido. – zabumba

Cuestiones relacionadas