美文网首页Ruby & Rails
mount_uploader image update vali

mount_uploader image update vali

作者: 云莉6 | 来源:发表于2019-04-30 15:15 被阅读0次
    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
    

    相关文章

      网友评论

        本文标题:mount_uploader image update vali

        本文链接:https://www.haomeiwen.com/subject/ykrvnqtx.html