【问题标题】:removing field name from validation error message [duplicate]从验证错误消息中删除字段名称[重复]
【发布时间】:2011-07-19 12:36:24
【问题描述】:

在 Rails 3 中,我不想在错误消息中显示字段名称。有人知道怎么做吗?

validates_presence_of :title, :message => "no title"

它显示

Title no title 

我想要

no title

【问题讨论】:

  • 这不是重复的。
  • 你得到答案了吗?

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


【解决方案1】:

在您的表单视图中更改您当前的代码

      <%@object.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>

有了这个

      <%@object.errors.messages.values.each do |msg| %>
        <%msg.each do  |m| %>
          <li><%= m %></li>
        <%end %>
      <% end %>

【讨论】:

    【解决方案2】:
    module ActiveModel
      class Errors
        def full_messages
          map { |attribute, message|
            message
          }
        end
      end
    end
    

    另请参阅:Change displayed column name in rails

    【讨论】:

      【解决方案3】:

      这对我们有用(Rails 4):

      <% resource.errors.each do |attr,msg| %>
          <li><%= msg %></li>
      <% end %>
      

      【讨论】:

      • 使用 Rails 4.0.2,这删除了错误消息文本,只留下了项目符号。
      【解决方案4】:

      这在 Rails 4 (haml) 中对我有用:

      %ul
        - @some_object.errors.messages.each do |message|
          %li= message[1][0]
      

      【讨论】:

        【解决方案5】:

        如果您更改元素的标签,它将影响错误消息标签。因此,如果您将其更改为空白字符串,它将仅呈现消息:

        -# reviews/_form.html.haml
        = form_for review do |form|
          = form.label :rating, (review.errors[:rating] ? "" : "Rate this Item" )
        

        【讨论】:

          【解决方案6】:

          您可以使用以下宝石

          https://github.com/jeremydurham/custom-err-msg

          您可以在消息值的开头使用“^”字符。并且只会显示之后的字符。

           validates_presence_of :title, :message => "^no title"
          

          您也可以使用以下宝石

          http://www.rubydoc.info/gems/dynamic_form/1.1.4

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-24
          • 2018-04-19
          • 1970-01-01
          相关资源
          最近更新 更多