如何将Rails对象作为参数发送到POST请求

时间:2016-02-18 10:09:29

标签: ruby-on-rails rest hash params

我有一个名为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] ??

将控制器中的应用程序作为哈希

2 个答案:

答案 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])

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