【问题标题】:Strong Parameters in Rails ignores a parameter after the content is modified [duplicate]Rails中的强参数在修改内容后忽略参数[重复]
【发布时间】:2017-06-01 06:36:12
【问题描述】:

我在 Rails 控制器中使用强参数时遇到问题。这是我的代码:

def request_params
  params[:req][:emails] = params[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup
  params.require(:req).permit(:emails, :body, :link, :other, :attributes)        
end

@request = Request.new(request_params)

当使用 request_params 创建 Request 对象时,emails 参数由于某种原因被忽略。

参数解析后有什么理由不允许这个参数吗?

为了解决这个问题,我必须明确指定 email 属性:

@request.emails = params[:req][:emails]

但我想知道是否有更清晰的解决方案。

提前致谢。

【问题讨论】:

标签: ruby-on-rails ruby activerecord strong-parameters


【解决方案1】:

为什么您在允许参数之前尝试对其进行操作?您应该在保存模型之前/之后对其进行修改。

如果您仍然想这样做,请尝试以下操作:

def request_params
  temp = params.require(:req).permit(:emails, :body, :link, :other, :attributes)
  temp[:req][:emails] = temp[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup
  temp.permit!
end

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2018-12-25
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多