我正在使用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