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

Permit custom created params in rails

我已经浏览了以下帖子,但没有得到满意的答案:

can't permit custom params with strong parameters

我想要的是在 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
{}

怎么了?

如果您查看 Permitted Scalar Values 下的强参数自述文件,您会发现由于您使用的是标量值数组,因此您必须像这样表示它:

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

你这里有一个数组,也就是说,你需要专门告诉接受一个数组。试试这个:

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

也可以在这里 https://github.com/rails/strong_parameters 查看所有类型 "permittable"。