【发布时间】:2015-11-03 20:55:53
【问题描述】:
我一次提交一个包含 2-4 个对象的表单,具体取决于父对象的数量。我意识到这可能是非常规的,但我真的希望用户能够在一个表单上一次编辑所有对象。在我的表格上,我正在做:
<%= simple_fields_for "derps[]", derp do |f| %>
<% end %>
然后我在控制器中这样做:
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
假设有两个对象 - 参数通过:
"derps"=>{"1"=>{"attribute"=>"39", "another_attribute"=>"serp", "a_third_attribute"=>"yerp"}, "2"=>{"attribute"=>"30", "another_attribute"=>"49", }}
我在 Rails 3 中工作,没有强大的参数。我正在升级到 rails 4,但我正在努力解决这个问题 - 我不断收到“Unpermitted parameters: 1, 2”
我假设我需要执行以下操作:
def mashes_params
params.require(:derps).permit(
id: []
或
def mashes_params
params.require(:derps).permit(
:id,
类似的东西,但我已经尝试了所有我能想到的方法,但没有运气。
这里有什么想法吗?
【问题讨论】:
-
什么是 mashes_params 中的
mashes?应该是derps? -
好的,谢谢!更正了那个错字。那是我真正的代码。我使用 derps 作为一个通用示例。
标签: ruby-on-rails ruby-on-rails-4 strong-parameters