Przesyłam formularz zawierający od 2 do 4 obiektów naraz, w zależności od liczby rodziców. Zdaję sobie sprawę, że jest to prawdopodobnie niekonwencjonalne, ale naprawdę chciałem, aby użytkownik mógł edytować wszystkie obiekty naraz w jednym formularzu. Na moim formularzu, robię:Szyny 4 Silne parametry z wieloma obiektami i kluczami całkowitymi
<%= simple_fields_for "derps[]", derp do |f| %>
<% end %>
Potem robię to w kontrolerze:
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
powiedzmy, że istnieją dwa obiekty - params idą przez jak:
"derps"=>{"1"=>{"attribute"=>"39", "another_attribute"=>"serp", "a_third_attribute"=>"yerp"}, "2"=>{"attribute"=>"30", "another_attribute"=>"49", }}
Miałem to działa w Rails 3 bez silnych params. Ja uaktualnieniu do szyn 4 i jestem zmaga się z jak dostać tej pracy - ciśgle „niedozwolonej parametry: 1, 2”
Jestem zakładając muszę zrobić coś takiego:
def mashes_params
params.require(:derps).permit(
id: []
lub
def mashes_params
params.require(:derps).permit(
:id,
Coś wzdłuż tych linii, ale próbowałem to każdy sposób mogę myśleć bez powodzenia.
Wszelkie pomysły tutaj?
co są 'mashes' w mashes_params? Czy to powinno być 'derps'? –
Tak, dziękuję! Poprawiono tę literówkę. To był mój prawdziwy kod.Użyłem derps jako ogólnego przykładu. – gregblass