use*_*888 3 hash ruby-on-rails strong-parameters
在我的一个控制器中,我有这条线:
params.require(:ad).permit(permitted_array)
Run Code Online (Sandbox Code Playgroud)
params[:ad]哈希.当此哈希中存在允许的密钥时,此行正常工作.如果params[:ad]是空哈希,则上述行失败.
示例:对于params被
{"ad"=>{}, "controller"=>"ads", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud)
params.require(:ad)调用后我收到此错误:
ActionController::ParameterMissing:
param is missing or the value is empty: advertiser
Run Code Online (Sandbox Code Playgroud)
但这很好用:
[2] pry()> params
=> {"ad"=>{"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}, "controller"=>"ads", "action"=>"create"}
[3] pry()> params.require(:ad).permit(permitted_array)
=> {"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}
Run Code Online (Sandbox Code Playgroud)
如何让这一行接受空哈希?
Sha*_*med 10
使params require有条件,只有当它存在时才需要密钥,如下所示:
params.require(:ad).permit(permitted_array) if params[:ad].present?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |