class Lesson
mount_uploader :image, ImageUploader
validates :image, presence: true
end
class LessonController
def update
if @lesson.update(lesson_params)
redirect_to root_path, notice: "更新课程成功"
else
render :edit
end
end
private
def lesson_params
params.require(:lesson).permit(:title, :description, :image)
end
end
上述代码,在 update 的时候,会一直报错 「image 不能为空」,在 update 时候,simple form 不会把 image 带回来,也就是 lesson_params 中不会存在 image,这样去更新的时候,其实之前 create 的时候已经上传过图片,在 update 还会被 validates 为不正确的。
改正方法为
class Lesson
mount_uploader :image, ImageUploader
validates :image, presence: true, if: -> { image_changed? }
end
rails 5 下可能要改为,因为在第一次 create 的时候,rails 5 中不会把 create 的算成 image_changed?
class Lesson
mount_uploader :image, ImageUploader
validates :image, presence: true, on: :create
end
网友评论