如何在rails 3.2上更新strong_parameters后更新嵌套对象?

时间:2013-03-06 09:31:01

标签: ruby-on-rails strong-parameters

我一直在使用带有Rails 3.2的strong_parameters gem一段时间了。到目前为止一切都还可以。

最近将strong_parameters更新到v0.2.0后,我再也无法更新嵌套对象了。

这是请求参数

{
  "resource"=>{
    "name"=>"1362483207-11-offer",
    "slug"=>"1362483207-11-offer",
    "code"=>"136248320711",
    "category_id"=>"4",
    "price"=>"100",
    "short_description"=>"",
    "description"=>"",
    "offer_card_types_attributes"=>{
      "0"=>{"id"=>"11", "card_type_id"=>"1"},
      "1"=>{"card_type_id"=>"0"},
      "2"=>{"card_type_id"=>"0"},
      "3"=>{"card_type_id"=>"0"}
    },
    "show_banner"=>"1",
    "autoclaim"=>"1",
    "published"=>"0",
    "number_of_codes_to_generate"=>"",
    "images_attributes"=>{
      "0"=>{"retained_image"=>"", "_destroy"=>"true", "id"=>"1"},
      "on-1362560061857"=>{
        "image"=>#<ActionDispatch::Http::UploadedFile:0x0000080ef654f8 ... >
      }
    },

    "partner_id"=>"2",
    "all_checkout_places"=>"0",
    "offer_checkout_places_attributes"=>{
      "0"=>{"checkout_place_id"=>"0"},
      "1"=>{"id"=>"11", "checkout_place_id"=>"7"},
      "2"=>{"checkout_place_id"=>"0"},
      "3"=>{"checkout_place_id"=>"0"},
      "4"=>{"checkout_place_id"=>"0"}
    }
  },
  "id"=>"11"
}

我已经试过了这个并且对此进行了谴责。我只是不更新​​嵌套对象。 请帮忙

起初我认为params.require(:resource).permti(..., :images => [])应该做到这一点,但是失败了,然后我尝试了其他各种选择。他们都失败了。

如何允许所有这些嵌套对象。

1 个答案:

答案 0 :(得分:0)

你查了一下日志吗?嵌套属性的关键是images_attributes,而不是images。这就是您需要传递permit()方法才能使其正常工作。