简体   繁体   中英

param is missing or the value is empty: gallery

The problem is with "strong parameters" in rails. I use dragonfly for uploading images.

The problem is that if I send an empty form I do not get any parameters for error handling. What can be the reason?

Controller:

There is still also a method "Create" which saves the image in the database and sends the user to a page with pictures.

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

Views:

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

Parameters:

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

This is the expected behavior, see the documentation for ActionController::Parameters#require

What I usually do in those cases is catch the exception and display a flash message to notify the user. You could also manually add an error to the model.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM