Я создаю приложение для фотогалереи, которое позволяет пользователям прикреплять несколько фотографий к каждой из своих галерей. Я использую Paperclip для обработки загрузки файлов."param отсутствует или значение пуст:" Paperclip no file selected - Rails
Приведенный ниже код работает нормально, пока на него не будет нажата кнопка [Загрузить], при этом файл не будет выбран. Насколько я понимаю, он застревает на контроллере, прежде чем он будет передан модели Photo
для запуска ее присутствия, проверки типа файла и размера файла.
получила Ошибку при нажатии кнопки [Загрузить] без файла, выбранного в: «пары отсутствуют или значение пустое: фото» Извлеченные источник имеет photo#photo_params
линии выделена.
Галерея Модель:
class Gallery < ActiveRecord::Base
belongs_to :user
has_many :photos
end
Фотомодель:
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
действие контроллера (фото # создать):
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
Сильные Params (фото # photo_params):
def photo_params
params.require(:photo).permit(:photo)
end
Загрузить Форма:
<%= form_for Photo.new, url: gallery_photos_path(@gallery) do |f| %>
<%= f.label :photo %>
<%= f.file_field :photo %>
<%= f.submit "Upload" %>
<% end %>
Я понимаю, что использование Model.new
в форме, вероятно, не является лучшей практикой, но так как форма загружается как частичный на галереи # шоу зрения, это было единственный способ, которым я мог это сделать.
Я также думаю, что наличие модели с именем :photo
и фактическое вложение скрепки, также называемое :photo
, также могут быть причиной. Это верно?
Кто-нибудь знает, что здесь происходит?