为什么我的表单是用'<div class =“field_with_errors”>'元素重新渲染的?

时间:2017-09-11 19:14:33

标签: ruby-on-rails forms validation ruby-on-rails-5

我正在使用Rails 5.我有这个用于在表单中显示字段

  <div class="field">
    <%= f.label :price, 'Price', :class => "control-label" %> <span class="required">*</span> <br>
    <%= f.text_field :price, :size => 30 %>
    <div class='error'><%= show_errors(@user_event, :price) %></div>
  </div>

它将HTML呈现如下

<div class="field">
    <label class="control-label" for="user_event_price">Price</label> <span class="required">*</span> <br>
    <input size="30" name="user_event[price]" id="user_event_price" type="text">
    <div class="error"></div>
  </div>

在发生错误之前,所有内容都看起来很有效并且表单会因错误而重新呈现。然后HTML呈现为

<div class="field">
    <div class="field_with_errors"><label class="control-label" for="user_event_price">Price</label></div> <span class="required">*</span> <br>
    <div class="field_with_errors"><input size="30" value="" name="user_event[price]" id="user_event_price" type="text"></div>
    <div class="error">Please enter a value for price.</div>
  </div>

这是一个问题的唯一原因是因为我的星号“*”,然后出现在标签元素下面(它们在不同的行上),看起来很难看。我想知道这是否是因为表格是用那个奇怪的

重新渲染的
<div class="field_with_errors">

元素。如果出错,我怎样才能让我的表单重新渲染?下面,如果它甚至重要,我的application_helper.rb文件中定义了“show_errors”函数......

module ApplicationHelper

  def show_errors(object, field_name)
    if object.errors.any?
      if !object.errors.messages[field_name].blank?
        object.errors.messages[field_name].join(", ")
      end
    end
  end

end

0 个答案:

没有答案