2016-11-12 75 views
1

我已經通過下面的帖子了創建參數,可以沒有得到任何令人滿意的答案:許可證風俗在軌

can't permit custom params with strong parameters

Permit extra params in special cases with Strong Params in Rails 4

我要的是要允許我的自定義在軌道控制器創建PARAMS :

我的代碼

模板

= form_tag ... 
    = select_tag :hour, options_for_select(options_for_hours), name: "clinic_hour[close_time][]", title: "Hours" 
    = select_tag :minute, options_for_select(options_for_minutes), name: "clinic_hour[close_time][]", title: "Minutes" 
    = select_tag :convention, options_for_select([["AM", "AM"], ["PM", "PM"]]), name: "clinic_hour[close_time][]" 
    = submit_tag ... 

上面的代碼建立PARAMS,如:

Parameters: {"clinic_hour"=>{"close_time"=>["0", "0", "AM"]}} 

但在控制器...

控制器

當我不喜歡:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time 
) 
end 

還在說這一點,在軌服務器日誌:

Unpermitted parameters: close_time 
{} 

有什麼不對?

回答

1

您有一個數組,這意味着,您需要專門說明接受數組。試試這個:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time => [] 
) 
end 

另外這裏https://github.com/rails/strong_parameters你可以看到所有類型爲「permittable」。

1

如果你看一下README爲強參數Permitted Scalar Values下,你會看到,因爲你與標值的數組的工作,你將不得不表示這樣的:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    close_time: [] 
) 
end