【问题标题】:Validation error message without brackets不带括号的验证错误消息
【发布时间】:2017-02-22 19:22:08
【问题描述】:

在我看来,我想在每个表单字段下方为表单的每个字段显示一条错误消息。所以我做这样的事情:

<% if @event.errors.full_message(:date,  @event.errors[:date]) %>
            <div class="alert alert-danger alert-dismissible fade in" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Fechar"><span aria-hidden="true">×</span></button>
                <%= @event.errors.full_message(:date,  @event.errors[:date]) %>
            </div>
        <% end %>

但是消息带有括号和属性名称。我不想在表单顶部使用each 来同时显示所有错误消息。我想在表单上显示每个输入的每个错误。我该怎么做,没有括号和消息上的属性名称?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    使用方括号[] 检索字段的相关错误:

    在你的情况下:

    <% if @event.errors[:date] %>
      <div class="alert alert-danger alert-dismissible fade in" role="alert">
          <button type="button" class="close" data-dismiss="alert" aria-label="Fechar"><span aria-hidden="true">×</span></button>
          <%= @event.errors[:date].join('. ') %>
      </div>
    <% end %>
    

    【讨论】:

    • 这很有效@Alex Kojin。但是为什么使用 .join('.') 会去掉消息的括号呢?
    • full_messages 方法返回一个消息数组;括号是被打印出来的数组对象。 api.rubyonrails.org/classes/ActiveModel/…
    • @churros @event.errors[:date] 返回一个数组。 join 方法将数组项连接到一个字符串。
    • 谢谢@Alex Kojin!
    【解决方案2】:

    @event.errorsActiveModel::Errors 的一个实例,它允许您使用[] 检索属性的错误。您也可以以相同的方式使用get,例如@event.errors.get(:some_attribute).

    @event.errors[:some_attribute] 返回传递的属性的错误数组。如果你想要完整的消息,你可以使用@event.errors.full_messages_for(:some_attribute),它也会返回一个数组。

    你的视图应该像这样检查属性的错误:

    @event.errors.has_key?(:some_attribute)
    

    您应该遍历错误以一一显示它们:

    @event.errors[:some_attribute].each do |error| 
      content_tag :span, error, class: 'error'
    end
    

    或者将它们连接成一个字符串或句子:

    @event.errors[:some_attribute].to_sentence
    

    或者只显示第一个/最后一个:

    @event.errors[:some_attribute].first
    

    【讨论】:

    • @event.errors.has_key?(:some_attribute) 优于 &lt;% if @event.errors[:some_attribute] %&gt;?
    • @churros 只有其中一个作品。 ;) 一个空数组是真实的。
    • 谢谢@coreyward!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多