Tôi đang gửi biểu mẫu với 2-4 đối tượng cùng một lúc, tùy thuộc vào số lượng phụ huynh có. Tôi nhận ra rằng điều này có lẽ là độc đáo, nhưng tôi thực sự muốn người dùng có thể chỉnh sửa tất cả các đối tượng cùng một lúc trên một biểu mẫu. Vào mẫu của tôi, tôi đang làm:Rails 4 Params mạnh với nhiều đối tượng và phím số nguyên
<%= simple_fields_for "derps[]", derp do |f| %>
<% end %>
Sau đó, tôi đang làm điều này trong bộ điều khiển:
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
phép nói rằng có hai đối tượng - params đang đến qua như:
"derps"=>{"1"=>{"attribute"=>"39", "another_attribute"=>"serp", "a_third_attribute"=>"yerp"}, "2"=>{"attribute"=>"30", "another_attribute"=>"49", }}
Tôi đã làm việc này trong Rails 3 mà không có thông số mạnh. Tôi đang nâng cấp lên đường ray 4 và tôi đang phải vật lộn với làm thế nào để làm việc này - tôi tiếp tục nhận được "thông số Unpermitted: 1, 2"
tôi giả sử tôi cần phải làm một cái gì đó như:
def mashes_params
params.require(:derps).permit(
id: []
hoặc
def mashes_params
params.require(:derps).permit(
:id,
cái gì đó dọc những dòng này, nhưng tôi đã cố gắng nó mỗi cách tôi có thể nghĩ đến mà không may mắn.
Mọi ý tưởng ở đây?
gì là 'mashes' trong mashes_params? Nếu đó là 'derps'? –
Vâng, cảm ơn! Sửa lỗi đó. Đó là mã thực sự của tôi.Tôi đã sử dụng derps như một ví dụ chung chung. – gregblass