클립 : : 오류 : : 누락 요구 사항 유효성 검사기 레일 4 오류
Rails 블로그 앱에서 클립을 사용하여 업로드하려고하면이 오류가 발생합니다. "MissingRequiredValidatorError"라고 말할 때 무엇을 참조하는지 모르겠습니다. post_params를 업데이트하고 : image를 제공하면 post_params를 만들고 업데이트 할 때 괜찮습니다.
Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError
Extracted source (around line #30):
def create
@post = Post.new(post_params)
이것은 내 posts_controller.rb입니다
def update
@post = Post.find(params[:id])
if @post.update(post_params)
redirect_to action: :show, id: @post.id
else
render 'edit'
end
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to action: :show, id: @post.id
else
render 'new'
end
end
#...
private
def post_params
params.require(:post).permit(:title, :text, :image)
end
그리고 이것은 내 게시물 도우미입니다
module PostsHelper
def post_params
params.require(:post).permit(:title, :body, :tag_list, :image)
end
end
도움이되도록 추가 자료를 보충 할 수 있는지 알려주십시오.
시작 Paperclip version 4.0
, 모든 첨부 파일이 포함하는 데 필요한 콘텐츠 _ 검증 , FILE_NAME 검증 , 또는에 명시 적으로 그들 중 하나를해야 할 것하지 않을 것을 상태.
Paperclip::Errors::MissingRequiredValidatorError
이 작업을 수행하지 않으면 클립에서 오류 가 발생합니다.
귀하의 경우에, 당신은 당신의 다음 행 중 하나를 추가 할 수 있습니다 Post
, 모델 후 지정has_attached_file :image
옵션 1 : 컨텐츠 유형 확인
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
다른 방법으로
validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] }
-또는-또 다른 방법
컨텐츠 유형을 검증 하기 위해 정규식 을 사용하는 것 입니다.
예를 들어 : 모든 이미지 형식의 유효성을 검사하려면 다음과 같이 정규식을 지정할 수 있습니다.
옵션 2 : 파일 이름 확인
validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/, /gif\Z/]
옵션 3 : 확인하지 않음
일부 경우에 미친 이유 (수 있습니다 유효 하지만 난 지금 하나 생각할 수 없다), 당신은 어떤 추가하지 않으려면 content_type
다음을 추가 한 후 서버에 당신이 기대하지 않은 데이터를 확인 및 스푸핑 콘텐츠 유형에 사람들을 허용 및 수신 :
do_not_validate_attachment_file_type :image
노트 :
위의 content_type
/ matches
옵션 내에서 요구 사항에 따라 MIME 유형을 지정하십시오 . 나는 당신이 시작할 수 있도록 몇 가지 이미지 MIME 유형을 제공했습니다.
참고:
여전히 확인해야하는 경우 클립 : 보안 유효성 검사를 참조하십시오 . :)
https://stackoverflow.com/a/23846121에 설명 된 스푸핑 유효성 검사를 처리해야 할 수도 있습니다.
모델에 넣으십시오.
validates_attachment :image, content_type: { content_type: /\Aimage\/.*\Z/ }
https://github.com/thoughtbot/paperclip
모델 에 validates_attachment_content_type 을 추가해야합니다.
레일 3
class User < ActiveRecord::Base
attr_accessible :avatar
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
레일 4
class User < ActiveRecord::Base
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
게시물 모델이 다음과 같은지 확인하십시오.
class Post < ActiveRecord::Base
has_attached_file :photo
validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
end
이 솔루션 중 어느 것도 작동하지 못했습니다. Paperclip 3.1을 사용해 보았지만 응용 프로그램에서 이미지 파일 확장자가 jpg 인 경우에도 승인되지 않았다고 계속 알려주지 못했습니다.
마침내 버전 3.5.1에서 성공했습니다.
'IT story' 카테고리의 다른 글
텍스트를 80 열로 재구성 / 강제하는 vim 명령 (0) | 2020.04.20 |
---|---|
iframe을 다시로드 / 새로 고치는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.20 |
문자열이 유효한 HTTP URL인지 확인하는 방법은 무엇입니까? (0) | 2020.04.20 |
자바 스크립트에서 문자열이 목록에 있는지 확인 (0) | 2020.04.20 |
쉘 스크립트에서 주석 차단 (0) | 2020.04.20 |