【问题标题】:Tweak Devise error helper to show error message only调整设计错误助手以仅显示错误消息
【发布时间】:2018-01-08 16:41:45
【问题描述】:

我正在尝试调整 Devise 助手以便仅显示错误消息,而不是字段名称。

这是设计代码的样子:

messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join

我的问题是它同时显示了字段名称和消息,例如:

电话号码 电话号码丢失

我只想要消息

编辑编辑

我的实际型号电话号码验证如下所示:

validates :phone_number, presence: {message: "Nous avons besoin de votre numéro de téléphone"}
validates :phone_number, format: { with: /\A(?:[+\d].*\d|\d)\z/, message: "le format de votre numéro de téléphone n'est pas reconnu" }

基本上,状态消息是“我们需要您的电话号码”,类似于:

电话号码 Nous avons besoin de votre numéro de téléphone

(我知道我没有使用语言环境,但一旦没问题,我会在 fr.yml 中移动所有内容)

【问题讨论】:

  • 您能发布您的型号代码以便我们查看验证吗? full_messages 默认应该是 #{field_name} #{message} 所以你不应该看到这样的字段的重复。此外,默认情况下,存在检查验证 (validates :phone_number, presence: true) 应该有错误消息 can't be blank 而不是 is missing
  • 嗨@ejdraper 我已经编辑了我的问题。是否无法摆脱 #{field_name} 位?或者我应该为phone_number 添加一个语言环境以获得正确的翻译并将其作为我的消息的标题
  • 好吧,我明白你的意思了。我认为,如果您想要一个完全自定义的消息,其中字段名称在那里但不一定在开头,那么您很可能必须使用自定义消息(如您​​所说,根据需要进行语言环境翻译),然后使用下面的解决方案仅显示消息 - 任何其他自定义通常假定您希望字段名称在开头。

标签: ruby-on-rails devise ruby-on-rails-5


【解决方案1】:

好吧,看来我找到了答案:

resource.errors.each do |attr,message|
   messages << "<li>"+message+"</li>"
end

它只将不带模型名称的错误消息添加到messages 常量。虽然有点丑。

【讨论】:

    猜你喜欢
    • 2023-01-29
    • 2019-04-04
    • 1970-01-01
    • 2013-12-31
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2012-07-24
    相关资源
    最近更新 更多