[英]Rails 4 - Unpermitted parameters for nested param despite whitelisting
[英]Whitelisting Nested Parameters in Rails
我有一個具有以下結構的參數哈希(它是使用fields_for構建的)
=> {"utf8"=>"✓",
"daily_log"=>
{"id"=>"1",
"entries_attributes"=>
{"0"=>
{"count"=>"",
"hours"=>"",
"minutes"=>"",
}
}
},
"controller"=>"entries",
"action"=>"create"}
我正在嘗試創建一個entries_attributes_params
方法,該方法應該僅返回白名單版本的params['daily_log']['entries_attributes']
。 不幸的是,當我調用該方法時,它總是以{}
返回。
以下作品
def entries_attributes_params`
params[:daily_log][:entries_attributes].permit!
end
但我想避免使用permit!
。 所以我嘗試了以下方法:
def entries_attributes_params
params[:daily_log][:entries_attributes].permit(:count, :hours, :minutes)
end
這行不通。 我回來了{}
。
我想我包裹傳遞到屬性permit
用[]
但不起作用。
...permit([...attributes...])
我該怎么做呢?
嘗試這個:
def entries_attributes_params
params_hash = params.require(:daily_log).permit(:id, entries_attributes: [:count, :hours, :minutes])
params_hash[:entries_attributes]
end
弄清楚了。 關鍵是要認識到params.permit ...
實際上並沒有改變主要的params哈希值。 它創建一個新對象。 將此思想與以下KM的解決方案結合在一起即可得出完整的答案:
def entries_attributes_params
p = params.require(:daily_log).permit(:id, entries_attributes: [:count, :hours, :minutes])
p[:entries_attributes]
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.