允许在rails中自定义创建的参数

时间:2016-11-12 14:35:04

标签: ruby-on-rails ruby params ruby-on-rails-4.2

我已经完成了以下帖子,没有得到任何满意的答案:

can't permit custom params with strong parameters

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

我想要的是允许在rails控制器中自定义创建的参数:

我的代码

模板

= 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

在rails服务器日志中仍然这样说:

Unpermitted parameters: close_time
{}

出了什么问题?

2 个答案:

答案 0 :(得分:1)

如果你看一下Permitted Scalar Values下的强参数自述文件,你会看到,因为你正在处理一组标量值,你必须这样表示:

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

答案 1 :(得分:1)

这里有一个数组,这意味着你需要专门告诉接受一个数组。试试这个:

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

同样在这里https://github.com/rails/strong_parameters你可以看到所有类型都是" permittable"。