【问题标题】:Mapping Validation Errors To Different Input将验证错误映射到不同的输入
【发布时间】:2016-07-13 23:34:13
【问题描述】:

我正在使用 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

有没有办法将这些错误映射到该输入,以便它们显示为内联错误?鉴于我已经有了上面的模板,它可以正常工作并包含一个错误字段,我只想要一种传递错误消息的方法来显示。

【问题讨论】:

  • 在我的回答中添加了文档

标签: forms validation ruby-on-rails-4 paperclip simple-form


【解决方案1】:

是的,表单生成器有一个方法error,你可以指定你想要错误的属性:

photo_form.error :image_content_type
photo_form.error :image

文档here.

【讨论】:

  • 谢谢。所以这将涉及手动构建包装器、输入、错误和提示,对吗?
  • 不确定你的意思 - 在模板中手动或手动 in config?
  • 对不起。那还不清楚。我的意思是我必须为该输入编写一个单独的模板吗?有没有办法将错误消息传递给对&lt;%= photo_form.input … %&gt; 的调用? (我已经更详细地更新了问题)。
  • 可以传递错误消息,但无法指定从模板显示错误消息的条件(它以简单的形式发生here,它调用@987654327 @在模型上)。您可以修改简单的表单以包含满足您需求的构建器方法。
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2018-09-30
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2014-07-11
相关资源
最近更新 更多