“错误”:errors.add不显示locales / xx.yml中的消息

时间:2013-10-07 15:01:39

标签: ruby-on-rails ruby ruby-on-rails-3

我在模型中有一个方法是检查一个是否是可疑附件之前进行上传,万一,如果他的结束。蝙蝠随着。可执行程序 , 。 Src或。 Cmd。

如果他的文件可疑,我想显示一条消息。 我是葡萄牙语,所以我使用了一个翻译文件。

方法是:

def suspicious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:attachment_file_name, I18n.t('errors.messages.suspicious_attachment', :value => attachment.path[-4..-1]))
    errors.add_to_base(I18n.t('errors.messages.suspicious_attachment', :value => attachment.path[-4..-1]))
    errors.add(:attachment_file_name)
  end
end

返回:

不允许上传附件附件文件名。同 附件附件文件名无效 不允许上传附件库。与

我不想显示那些词:“附件附件文件名”和“附件库”。

我不明白为什么会出现这些词。

抱歉我的英文。

由于

1 个答案:

答案 0 :(得分:3)

显示这些额外字符串是因为您在属性上添加了错误消息,而不是基础:

errors.add(:base, "some custom error message")

将显示如下消息:

  

“一些自定义错误消息”

而这

errors.add(:attribute, "other message")

将显示如下消息:

  

“属性”其他消息“


在您的情况下,使用:base添加错误:

def suspitious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:base, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
  end
end

或者,如果您要使用以下消息翻译属性:

activerecords:
  attributes:
    your_model_name:
      attachment_file_name: "File"

并使用它来添加相应的消息:

def suspitious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:attachment_file_name, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
  end
end

哪个应该显示如下错误:

  

不允许上传“文件”