Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用StrongParameters处理缺少的必需参数的最佳方法?_Ruby On Rails_Ruby On Rails 4_Strong Parameters - Fatal编程技术网

Ruby on rails 使用StrongParameters处理缺少的必需参数的最佳方法?

Ruby on rails 使用StrongParameters处理缺少的必需参数的最佳方法?,ruby-on-rails,ruby-on-rails-4,strong-parameters,Ruby On Rails,Ruby On Rails 4,Strong Parameters,我有一个UploadActiveModel类,它有一个属性:filename。由于只有一个属性,因此在我的控制器中使用以下代码时,将表单上的字段留空会导致错误: class UploadsController < ApplicationController def create @upload = Upload.new(upload_params) # ... end private def upload_params params.requir

我有一个
Upload
ActiveModel类,它有一个属性:
filename
。由于只有一个属性,因此在我的控制器中使用以下代码时,将表单上的字段留空会导致错误:

class UploadsController < ApplicationController
  def create
    @upload = Upload.new(upload_params)
    # ...
  end

  private

  def upload_params
    params.require(:upload).permit(:filename)
  end
end
或者,我想我可以添加一个隐藏字段,以确保无论发生什么情况,
filename
字段始终设置为某个值,例如:

= simple_form_for upload do |f|
  = f.input :filename, as: :hidden, input_html: { value: '' }
  = f.input :filename, as: :file
  = f.submit 'Upload'
有没有更好的方法来处理不填写任何表单属性的用户?

我在发布问题后立即找到的数字。:)

它看起来像是
ActionController::StrongParameters#fetch
方法执行所需操作,例如:

params.fetch(:upload, {}).permit(:filename)
params.fetch(:upload, {}).permit(:filename)