2016-11-12 69 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