基本上,我想要它,以便用户必须选择一个文件进行上传。然后,当用户按下表单提交按钮时,只有在用户选择了文件时才会成功。
我认为除了载波之外,我需要在Paperclip中使用validates_attachment
之类的东西。无论用户是否选择了图像,我发布的代码始终会呈现recipe_images/new
。
模型
class RecipeImage < ApplicationRecord
# upload images
mount_uploader :image, ImageUploader
validates_presence_of :image
# associations
belongs_to :recipe
end
控制器
class RecipeImagesController < ApplicationController
def new
@recipe_image = RecipeImage.new
@recipe_id = params[:recipe_id]
if current_user != Recipe.find(@recipe_id).user
redirect_to recipe_path(@recipe_id)
end
end
def create
@recipe_image = RecipeImage.new(recipe_image_params)
@recipe_id = params[:recipe_id]
@recipe = Recipe.find(@recipe_id)
if @recipe.recipe_images << @recipe_image
redirect_to recipe_path(@recipe)
else
flash[:recipe_image_create] = 'Please choose an image.'
render 'recipe_images/new'
end
end
private
def recipe_image_params
params.permit(:image)
end
end
查看
<% if flash[:recipe_image_create] %>
<strong><%= flash[:recipe_image_create]%></strong>
<% end %>
<%= form_for(@recipe_image, html: {multipart: true}) do |f| %>
<p>Select Image</p>
<div class="form-group">
<%= f.file_field :image %>
</div>
<%= hidden_field_tag 'recipe_id', @recipe_id %>
<%= f.submit 'Save',{class: 'btn btn-primary'} %>
<% end %>
答案 0 :(得分:0)
由于某些原因,创建向模型添加另一列修复了此错误。不知道为什么,但我会接受它。