如何将 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])

如果您将对象作为参数发送,它会自动转换为数组。