如何将 Rails 对象作为参数发送到 POST 请求
how to send Rails object to POST request as a param
我有一个名为 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] 将应用程序作为哈希值获取到控制器中??
您可以使用表单字段的名称属性构建两种数据结构。
foo[]
会将值放入名为 foo
的数组中
foo[bar]
将使用键 bar
.
将值放入名为 foo
的散列中
例如
<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"}]}
您不能通过参数发送对象。通常你应该在参数中发送那个对象的 ID,在接收端你应该在控制器中查找。
user = User.find(params[:user_id])
如果您将对象作为参数发送,它会自动转换为数组。
我有一个名为 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] 将应用程序作为哈希值获取到控制器中??
您可以使用表单字段的名称属性构建两种数据结构。
foo[]
会将值放入名为 foo
foo[bar]
将使用键 bar
.
foo
的散列中
例如
<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"}]}
您不能通过参数发送对象。通常你应该在参数中发送那个对象的 ID,在接收端你应该在控制器中查找。
user = User.find(params[:user_id])
如果您将对象作为参数发送,它会自动转换为数组。