我正在構建一個照片庫應用程序,允許用戶將多張照片附加到他們的每個畫廊。我正在使用Paperclip來處理文件上傳。「參數丟失或值爲空:」回形針沒有選擇文件 - 導軌
下面的代碼工作正常,直到單擊沒有選擇文件的窗體上單擊[上傳]。據我瞭解,它在被移交給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
的模型和實際的Paperclip附件也被命名爲:photo
也可能導致問題。它是否正確?
有人知道這裏發生了什麼嗎?