Sto inviando un modulo con 2-4 oggetti contemporaneamente, a seconda di quanti genitori hanno. Mi rendo conto che questo è probabilmente non convenzionale, ma volevo davvero che l'utente fosse in grado di modificare tutti gli oggetti contemporaneamente su un modulo. Sulla mia forma, sto facendo:Rails 4 Params forti con più oggetti e chiavi intere
<%= simple_fields_for "derps[]", derp do |f| %>
<% end %>
Poi sto facendo questo nel controller:
def update
@derps = []
@rejects = []
derps_params.each do |key, hash|
derp = Derp.find(key)
derp.assign_attributes(hash)
@rejects << derp unless derp.save
end
if @rejects.empty?
redirect_to @parent, flash: {success: 'Derps were successfully updated.'}
else
@derps = @rejects
render :edit
end
end
permette di dire ci sono due oggetti - i params stanno arrivando attraverso come:
"derps"=>{"1"=>{"attribute"=>"39", "another_attribute"=>"serp", "a_third_attribute"=>"yerp"}, "2"=>{"attribute"=>"30", "another_attribute"=>"49", }}
Ho avuto questo lavoro in Rails 3 senza parametri forti. Sto passando alle rotaie 4 e sto lottando con il modo di ottenere questo lavoro - continuo a ricevere "i parametri non consentito: 1, 2"
sto assumendo che ho bisogno di fare qualcosa di simile:
def mashes_params
params.require(:derps).permit(
id: []
o
def mashes_params
params.require(:derps).permit(
:id,
qualcosa del genere, ma ho provato in tutti i modi che posso pensare, senza fortuna.
Qualche idea qui?
cosa sono 'mash' in mashes_params? Dovrebbe essere "derps"? –
Sì, grazie! Corretto errore di battitura Quello era il mio vero codice.Stavo usando derps come esempio generico. – gregblass