![](/img/trans.png)
[英]Rails 4.0 Strong Parameters nested attributes with a key that points to a hash
[英]Rails 4: strong parameter with variable key hash
我需要能夠允許包含帶有變量鍵的hash
的參數。 我看過其他解決方案,但似乎沒有一種對我有用。
參數如下:
{"consult_stat"=>{"iter_0"=>{"employee_id"=>"1", "consults"=>"10", "signed"=>"11"}, "iter_1"=>{"employee_id"=>"1", "consults"=>"10", "signed"=>"11"}, "iter_2"=>{"employee_id"=>"1", "consults"=>"10", "signed"=>"11"}}
... iter_x
參數數量發生變化的地方。 我可以對一些迭代進行硬編碼(如下所示),但是我想要一個更靈活的解決方案,該解決方案可以根據提供的參數更改允許的參數。 以下工作到iter_5
。
params.require(:consult_stat).permit(:revenue, :weeks, :weeks_paid_up_front, :additional_weeks, :extensions, :paid_in_full, iter_0: [ :employee_id, :signed, :consults ], iter_1: [ :employee_id, :signed, :consults ], iter_2: [ :employee_id, :signed, :consults ], iter_3: [ :employee_id, :signed, :consults ], iter_4: [ :employee_id, :signed, :consults ], iter_5: [ :employee_id, :signed, :consults ])
您可以執行此操作,它將起作用。 但是您需要注意這些值。
params.require(:consult_stat).permit!
它將允許使用hash Consult_stat及其任何子哈希。
強大的params方法只是ruby,您不必提供文字哈希作為參數permit
,您可以提供基於params
存在的“ iter_”鍵創建的哈希:
iter_array = [ :employee_id, :signed, :consults ]
p = params.require(:consult_stat)
p.permit(
:revenue,
:weeks,
:weeks_paid_up_front,
:additional_weeks,
:extensions,
:paid_in_full,
Hash[p.keys.grep(/^iter_\d+$/).map {|k| [k.to_sym, iter_array] }]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.