【问题标题】:Permit custom created params in rails允许在 rails 中自定义创建的参数
【发布时间】:2016-11-12 22:44:13
【问题描述】:

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

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
{}

怎么了?

【问题讨论】:

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


    【解决方案1】:

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

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

    同样在这里https://github.com/rails/strong_parameters你可以看到所有类型都是“允许的”。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多