我想從參數中訪問三個鍵。在rails中的strong_parameters爲多個鍵
說我params爲:
params = {
'product_id' => 11,
'category' => {
'name' => 'Pet',
'sub_categories' => {5 => 'Name1', 7 => 'Name2'} ## **UPDATE**
'id' => 100
},
'user_action' => 'save'
}
現在我想用強大的參數來篩選這些關鍵的。即
#Inside controller
#action
def save_product_category
product_params[:product_id]
product_params[:category]
product_params[:user_action]
end
private
def product_params
params.permit(:product_id, :user_action, :category) # Doesn't work, eliminates 'category' key
end
如何過濾出這三個鍵?
UPDATE: 我發現這樣做的一種方式:
params.slice(:product_id, :category, :user_action)
它是做正確的方式?
更新2: 下面是正確答案:
params.permit(:product_id, :user_action, :category => [:id, :name, :sub_categories => {}])
感謝@R_O_R和@twonegatives幫助我和軸承與我:)
你能幫忙更新查詢嗎?謝謝。 – Indyarocks
不,他們不一樣。在使用'slice'時,您正在從'params'中提取所需的屬性,這是另一個'Hash'對象,用於更新。但是如果你想直接使用'param'對象,你需要藉助** strong參數**。 –
同意。但在更新後的查詢中,我更新了'category'中所需的參數。你能否檢查一下上面問題的'params'部分的'category'的'sub_categories'? – Indyarocks