2011-09-23 2 views
10

questo form_for utilizzato per lavorare prima che ho portato la mia domanda di rotaie 3,1form_for numero errato di argomenti (3 per 2), in quanto l'aggiornamento a rotaie 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> 

ho speso più di 4 ore a cercare di capire cosa c'è che non va ... c'è sicuramente qualcosa che non sto capendo più

ottengo l'errore:

numero errato di argomenti (3 per 2)

Nota che sono t cercando di aggiornare una variabile che non è un oggetto activerecord. È solo un oggetto che non è memorizzato nel database.

Spero che qualcuno possa aiutare.

acclamazioni

risposta

10

form_for richiede solo due argomenti, il record e options, anche se registrazione può essere diverse cose, tra cui un simbolo semplice, un oggetto o un array.

Prova semplicemente a rilasciare il primo simbolo e inviare il tuo oggetto. Se il modello non include ActiveModel::Naming, è possibile impostare il nome tramite l'opzione :as.

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

Altro aiuto può essere trovato qui:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

O per visualizzare l'origine direttamente:
https://github.com/rails/rails/blob/v3.1.0/actionpack/lib/action_view/helpers/form_helper.rb#L353

+0

Wahoo questo ha funzionato così bene! Sono molto molto grato. – zabumba