如何在本地化的Devise错误消息中大写模型名称?

时间:2013-04-23 15:05:31

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

我在我的Rails应用程序中使用Devise,我想知道为什么在我的错误消息中隐藏所有模型名称:Source code on Github

有没有办法改写这个?

例如,在德语中,名词以大写字母开头,例如“Benutzer”是正确的,但“benutzer”是错误的。

我在devise.de.yml

中有这个
de:

  activerecord:
    models:
      user: "Benutzer"

但是,Devise仍以小写字母呈现Benutzer

Konnte benutzer nicht speichern

这是错的!

我该如何解决这个问题?

感谢您的帮助......

2 个答案:

答案 0 :(得分:2)

快速修复

使用以下内容添加文件app/helpers/devise_helper.rb

module DeviseHelper
  def devise_error_messages!
    return "" if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    sentence = I18n.t("errors.messages.not_saved",
                      :count => resource.errors.count,
                      :resource => resource.class.model_name.human)

    html = <<-HTML
    <div id="error_explanation">
      <h2>#{sentence}</h2>
      <ul>#{messages}</ul>
    </div>
    HTML

    html.html_safe
  end
end
在我编辑之前,

:resource被迫倒闭:

resource.class.model_name.human.downcase

来自https://github.com/plataformatec/devise/blob/master/app/helpers/devise_helper.rb

的来源

答案 1 :(得分:0)

我认为你必须在帮助器中覆盖设计方法devise_error_messages!并将你的逻辑放在那里(如果你想要除了德语语言环境以外的其他语言环境,则删除小写或创建每个语言环境的案例)。