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

Vir*_*ren 12 ruby-on-rails carrierwave

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

def extension_white_list
  %w(jpg jpeg png)
end
Run Code Online (Sandbox Code Playgroud)

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

我想自定义验证错误消息

现在错误消息显示为

You are not allowed to upload "" files, allowed types: ["jpg","jpeg","png"]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我找到这个链接的人提到如何实现这一点

但它有些问题

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
Run Code Online (Sandbox Code Playgroud)

请给我一个CarrierWave的答案,请不要让我为扩展匹配编写单独的验证集

not*_*ere 19

实际上它是:

en:
  errors:
    messages:
      extension_white_list_error: "You are not allowed to upload %{extension} files, allowed types: %{allowed_types}"
Run Code Online (Sandbox Code Playgroud)

资源:

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


miz*_*nix 7

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

重命名extension_white_list〜>extension_whitelist

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

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


Vir*_*ren 6

将其添加到您的.yml翻译文件中:

en:
  errors:
    messages:
      extension_white_list_error: "You are not allowed to upload %{extension} files, allowed types: %{allowed_types}"
      content_type_whitelist_error: "You are not allowed to upload %{content_type} files, allowed types: %{allowed_types}"
Run Code Online (Sandbox Code Playgroud)

来源:

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