使用CarrierWave设置自定义错误消息

时间:2012-03-20 09:49:58

标签: ruby-on-rails carrierwave

我在carrierwave上运行了一个图片上传应用程序,限制用户只上传所需扩展程序的图像'jpg,jpeg,png'我已经在我的上传器中定义了载波波的验证定义为

def extension_white_list
  %w(jpg jpeg png)
end

现在,任何尝试上传扩展名与所需扩展名不同的图片(如上所述)都会导致验证错误

我想自定义验证错误消息

立即生效错误消息显示为

You are not allowed to upload "" files, allowed types: ["jpg","jpeg","png"]

任何人都可以帮助我找到这个link,其中的人提到如何实现这个

但它有些问题

1. I18n support I dont require to translate the error message using I18n 

2. The 'Key' to be used I not sure which key to used in YAML for
    not matching extension whitelist error message (e.g) carrierwave_processing_error key if error is for processing failure

请在CarrierWave方面给我答案,请不要让我为扩展名匹配编写单独的验证集

4 个答案:

答案 0 :(得分:18)

实际上是:

en:
  errors:
    messages:
      extension_white_list_error: "You are not allowed to upload %{extension} files, allowed types: %{allowed_types}"

来源:

https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/locale/en.yml

答案 1 :(得分:6)

如果有人在2016年结束了这里,并想知道为什么在这个页面或网络上的任何其他地方找到的正确答案不起作用,可能是因为这个原因。至少在我的情况下是这样的:

  

重命名extension_white_list〜> extension_whitelist

复制解决方案时很容易错过。

https://github.com/carrierwaveuploader/carrierwave/commit/06003a5044190f93d07d958b6ca9fd6f6f8fbdb2

答案 2 :(得分:3)

在en.yml中定义一个键值对

en:
  errors:
    messages:
       extension_white_list_error: 'My Custom Message'

如果最近版本已更改。如果以上答案不起作用,请尝试以下方法:

en:
  errors:
    messages:
       extension_whitelist_error: 'My Custom Message'

让CarrierWave完成剩下的工作

答案 3 :(得分:1)

由于某种原因,我的ActiveModel在调用mount_uploader时未包含来自carrierwave的验证模块。我必须在我的模型中做include CarrierWave::Validations::ActiveModel以获得完整性验证器。