복붙노트

[RUBY-ON-RAILS] 종이 클립 :: 오류 :: 레일과 MissingRequiredValidatorError 4

RUBY-ON-RAILS

종이 클립 :: 오류 :: 레일과 MissingRequiredValidatorError 4

내 레일 응용 프로그램을 블로그와 클립을 사용하여 업로드 할 때이 오류를 받고 있어요. 확실하지 무엇을 그것은 "MissingRequiredValidatorError"를 말할 때 언급한다 나는 post_params를 업데이트하고 제공함으로써 그 생각 : 모두 만들고 업데이트 사용 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

당신이 나를 도와 내가 도움에 추가 자료를 보완 할 수 있는지 알려 주시기 바랍니다.

해결법

  1. ==============================

    1.종이 클립 버전 4.0부터 모든 첨부 파일들은이 중 하나를하지 않을거야하는 콘텐츠 _ 검증하는 FILE_NAME 검증, 또는 명시 적 상태에 포함해야합니다.

    종이 클립 버전 4.0부터 모든 첨부 파일들은이 중 하나를하지 않을거야하는 콘텐츠 _ 검증하는 FILE_NAME 검증, 또는 명시 적 상태에 포함해야합니다.

    종이 클립은 종이 클립 :: 오류를 제기 :: MissingRequiredValidatorError 오류가이 중 하나를 수행하지 않는 경우.

    귀하의 경우에는, 당신은 has_attached_file을 지정한 후, 당신의 포스트 모델에 다음 줄 중 하나를 추가 할 수 있습니다 이미지를

    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"] }
    

    - 또는 - 또 다른 방법

    콘텐츠 형식의 유효성을 확인하는 정규식을 사용하는 것입니다.

    예를 들면 다음에 도시 된 바와 같이, 모든 화상 포맷을 검증하기 위해, 정규식 표현이 지정 될 수있다

    LucasCaton의 대답 @

    validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/, /gif\Z/]
    

    어떤 미친 이유 (유효 할 수 있지만 지금 내가 하나 생각할 수 없다) 경우 다음을 추가, 당신은 당신이 당신의 서버에 기대하지 않은 데이터를 어떤 콘텐츠 _ 유효성 검사를 추가하고 스푸핑 콘텐츠 유형에 사람을 허용받지 않으 수행원:

    do_not_validate_attachment_file_type :image
    

    노트 :

    / 위의 옵션을 일치 콘텐츠 _ 내에서 사용자의 요구 사항에 따라 MIME 형식을 지정합니다. 당신이 시작하기 전 몇 가지 이미지 MIME 타입을 주었다.

    참고:

    당신은 여전히 ​​확인해야 할 경우, 보안하는 검증 : 종이 클립을 참조하십시오. :)

    또한 https://stackoverflow.com/a/23846121 스푸핑 검증은 여기에서 설명을 처리해야 할 수도 있습니다

  2. ==============================

    2.그냥 모델에 넣어 :

    그냥 모델에 넣어 :

    validates_attachment :image, content_type: { content_type: /\Aimage\/.*\Z/ }
    

    https://github.com/thoughtbot/paperclip

  3. ==============================

    3.모델에 validates_attachment_content_type을 추가해야

    모델에 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
    
  4. ==============================

    4.이 같은 확인 게시물 모델의 모습을 ...

    이 같은 확인 게시물 모델의 모습을 ...

    class Post < ActiveRecord::Base
        has_attached_file :photo
        validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
    end
    
  5. ==============================

    5.나도 작업에 이러한 솔루션 중 하나를 가져올 수 없습니다. 그들이 JPG했다하더라도, 나는 종이 클립 3.1 시도,하지만 내 응용 프로그램이 승인되지 않은 나에게 내 이미지 파일 확장자를 말하는 유지 없습니다.

    나도 작업에 이러한 솔루션 중 하나를 가져올 수 없습니다. 그들이 JPG했다하더라도, 나는 종이 클립 3.1 시도,하지만 내 응용 프로그램이 승인되지 않은 나에게 내 이미지 파일 확장자를 말하는 유지 없습니다.

    나는 마지막 버전 3.5.1 성공을 발견했다.

  6. from https://stackoverflow.com/questions/21897725/papercliperrorsmissingrequiredvalidatorerror-with-rails-4 by cc-by-sa and MIT license