2016-07-13 4 views
0

私はPaperclipを使用してファイルのアップロードを処理していますが、非常に大きなファイルを処理しているため、隠しフィールドのセットからファイル情報を送信する前にS3に直接画像をアップロードしています。異なる入力へのマッピング検証エラー

私はファイル入力(original_file_urlと呼ばれます)がありますが、これはS3アップロードでのみ使用されます。ファイルのアップロードが完了したときに、アップロードから必要なデータが一連の非表示フィールドに入力されます。

"photo.image_content_type"=>["is invalid"], 
"photo.image"=>["is invalid", "can't be blank", "Width must be at least 2460px", "Height must be at least 1640px"]} 

私が使用している単純な形式:

<%= photo_form.input :original_image_url, as: :file, label:false %> 

次のテンプレートでこれがクリップによって生成検証エラーは、私自身の検証エラーと一緒に、私のファイル入力にマップされないことを意味し私の初期設定で定義されています:

config.wrappers :app, class: 'ControlGroup', error_class: 'is-error' do |b| 
    b.use :html5 
    b.use :placeholder 
    b.optional :maxlength 
    b.optional :pattern 
    b.optional :min_max 
    b.optional :readonly 
    b.use :label_input 
    b.use :error, wrap_with: { tag: :div, class: 'ControlGroup-inlineError' } 
    b.use :hint, wrap_with: { tag: :span, class: 'ControlGroup-hint' } 
    end 

これらのエラーをインラインエラーとして表示する方法はありますか?私は既に上記のテンプレートがうまく動作し、エラーフィールドを含んでいることを考えれば、表示されるエラーメッセージを渡す方法がほしいです。

+0

私の答えにドキュメントを追加 –

答えて

0

はい、フォームビルダは、メソッドerrorを持っており、あなたがのためにエラーたいプロパティを指定することができます

photo_form.error :image_content_type 
photo_form.error :image 

ドキュメントhereを。

+0

ありがとうございました。これはラッパー、入力、エラー、およびヒントを手動で構築することを必要としますか? – Undistraction

+0

あなたはそれが何を意味するのかよくわかりません - 手動でテンプレートを使うか、手動で設定してください(https://github.com/plataformatec/simple_form/wiki/Custom-Wrappers)? –

+0

申し訳ありません。それは不明であった。私はその入力のためだけに別のテンプレートを書かなければならないのですか?エラーメッセージを '<%= photo_form.input ...%>'の呼び出しに渡す方法はありませんか? (私は質問をより詳細に更新しました)。 – Undistraction