簡體   English   中英

將Rails中的嵌套參數列入白名單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM