param丢失或值为空:gallery

时间:2017-01-31 12:29:19

标签: ruby-on-rails strong-parameters dragonfly-gem

问题在于rails中的“强参数”。 我使用dragonfly上传图片。

问题是,如果我发送一个空表单,我没有得到任何错误处理参数。可能是什么原因?

控制器:

还有一种方法“创建”,它将图像保存在数据库中,并将用户发送到带有图片的页面。

def index
  @gallery = Gallery.new
  @galleries = Gallery.all
end

def create
  @gallery = Gallery.new(gallery_params)

  if @gallery.save
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' }
  else
    redirect_to :back,          flash: { alert: "Your Image don't save." }
  end
end

def gallery_params
  params.require(:gallery).permit(:image)
end

查看:

= form_for @gallery do |f|
  = f.file_field :image
  = f.submit 'Submit', class: 'btn bth-primary btn-lg'

参数:

{"utf8"=>"✓",    "authenticity_token"=>"8eotQtkj8SElqJLdHuOX8r+dWrCJRWTmVcyfd1mSLD/8MjWw/ElH/HCxZFSJ6oOWaxpbLbn4kAg5nlFycsgjHg==", "commit"=>"Submit"}

1 个答案:

答案 0 :(得分:1)

这是预期的行为,请参阅ActionController::Parameters#require

的文档

在这些情况下我通常做的是捕获异常并显示flash消息以通知用户。您也可以手动向模型添加错误。

def create
  @gallery = Gallery.new(gallery_params)

  if @gallery.save
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' }
  else
    redirect_to :back, flash: { alert: "Your Image don't save." }
  end
rescue ActionController::ParameterMissing => e
  redirect_to :back, flash: { alert: "Please attach an image." }
end
相关问题