2017-02-20 36 views
2

我收到此PARAMS:許可證多維PARAMS

<ActionController::Parameters 
    {"page_hierarchy"=> 
     [<ActionController::Parameters 
      {"id"=>"6", "children"=>[ 
         {"id"=>"1", "children"=>[{"id"=>"2"}, 
         {"id"=>"5"}, 
         {"id"=>"3"}, 
         {"id"=>"18"}, 
         {"id"=>"4"}]}]} permitted: false>]} permitted: false> 

"page_hierarchy"是由若干"{id: , children: }"元件的陣列。 A children以及由幾個"{id: , children: }"元素組成的數組。

我該如何允許這種格式的參數?

解決像這樣的,我沒有工作,因爲數組是多維的Permit array in params

回答

1

您可以通過允許哈希不是數組要做到這一點,像這樣:

params.permit(page_hierarchy: {}) 

Rails Guides更詳細地解釋:

有時是不可能的或方便申報有效密鑰 的散列參數或其內部結構。只需映射到一個空的 哈希值:

params.permit(preferences:{})但要小心,因爲這會打開 的大門以進行任意輸入。在這種情況下,許可證可確保返回的結構中的值是允許的標量,並過濾掉其他任何東西 。

由於您的PARAMS深深嵌套,你可以加入白名單整個哈希,您可以用permit!做,但要注意,這可能會帶來安全問題:

params.permit!(:page_hierarchy) 

再次,從取Rails Guides

要將參數的整個散列列入白名單,許可證!方法可以使用:

params.require(:log_entry).permit!這標誌着:log_entry 參數散列及其任何子散列被允許,並且不檢查 允許的標量,任何東西都被接受。在使用許可證時,應特別注意 ,因爲它將允許所有當前和將來的 型號屬性進行批量分配。