我有一个名为app的rails对象,当我通过以下方法将它发送到控制器然后我将params [:app]作为控制器中的数组。我已经尝试了很多堆栈溢出但是没有找到我想要的东西
assert_difference("Tagging.count", 3) do
put "/candidates/#{app.id}", {id: app.id, assigned_tags: " #{tag_one.name} #{tag_two.name} #{tag_three.name} " , app: app.to_json }
end
如何通过params [:app] ??
将控制器中的应用程序作为哈希答案 0 :(得分:2)
您可以使用表单字段的name属性构建两个数据结构。
foo[]
会将值放入名为foo
foo[bar]
会使用密钥foo
将值放入名为bar
的哈希值。
例如
<input type="text" name="foo[]" value="bacon">
<input type="text" name="foo[]" value="chicken">
=> params = {:foo => ["bacon", "chicken"]}
<input type="text" name="foo[bar]" value="bacon">
<input type="text" name="foo[baz]" value="chicken">
=> params = {:foo => {:bar => "bacon", :baz => "chicken"}}
可以合并:
<input type="text" name="foo[bar][]" value="bacon">
<input type="text" name="foo[baz][]" value="chicken">
=> params = {:foo => {:bar => ["bacon"], :baz => ["chicken"]}}
<input type="text" name="foo[][bar]" value="bacon">
<input type="text" name="foo[][baz]" value="chicken">
=> params = {:foo => [{:bar => "bacon", :baz => "chicken"}]}
答案 1 :(得分:0)
您无法通过参数发送对象。通常你应该在参数中发送该对象的ID,在接收端你应该在控制器中查找。
user = User.find(params[:user_id])
如果您将对象作为参数发送,它将自动转换为数组。