Ich baue eine Fotogalerie-Anwendung, die es Benutzern ermöglicht, mehrere Fotos an jede ihrer Galerien anzuhängen. Ich verwende Paperclip, um Datei-Uploads zu verarbeiten."Parameter fehlt oder der Wert ist leer:" Büroklammer keine Datei ausgewählt - Rails
Der folgende Code funktioniert, bis [Upload] auf das Formular geklickt wird, ohne dass eine Datei ausgewählt wurde. So wie ich es verstehe, bleibt es beim Controller hängen, bevor es an das Photo
Modell übergeben wird, um seine Anwesenheits-, Dateityp- und Dateigrößenvalidierungen auszuführen.
Der Fehler erhalten, wenn [Upload] klicken, ohne Datei ausgewählt ist: „param fehlt oder der Wert leer ist: photo“ Extrahiert Quelle hat photo#photo_params
Linie markiert.
Gallery Modell:
class Gallery < ActiveRecord::Base
belongs_to :user
has_many :photos
end
Fotomodell:
class Photo < ActiveRecord::Base
belongs_to :user
belongs_to :gallery
has_attached_file :photo,
s3_permissions: :private
validates_attachment :photo,
presence: true,
content_type: {
content_type: [
"image/jpeg", # JPEG/JPG
"image/png" # PNG
] },
size: { in: 0..5.megabytes }
end
Controller-Aktion (Fotos # erstellen):
def create
@photo = Photo.new(photo_params)
@photo.gallery_id = @gallery.id
@photo.user_id = current_user.id
if @photo.save
flash[:success] = "Photo successfully saved."
redirect_to gallery_path(@photo.gallery)
else
flash[:error] = "The photo upload failed! Make sure the file you're trying to upload is of a supported type (JPG, JPEG or PNG) and try again."
redirect_to gallery_path(@photo.gallery)
end
end
Strong Param (Fotos # photo_params):
def photo_params
params.require(:photo).permit(:photo)
end
hochladen Form:
<%= form_for Photo.new, url: gallery_photos_path(@gallery) do |f| %>
<%= f.label :photo %>
<%= f.file_field :photo %>
<%= f.submit "Upload" %>
<% end %>
Ich weiß, dass Model.new
in Form verwendet, ist wahrscheinlich kein Best-Practice sondern weil die Form als Teil auf Galerien # show Ansicht geladen wird, war es Der einzige Weg, wie ich es in Gang bringen könnte.
Ich denke auch, dass das Modell :photo
und die tatsächliche Paperclip-Anlage auch :photo
genannt möglicherweise ein Problem verursacht. Ist das richtig?
Weiß jemand, was hier vor sich geht?