3

当我尝试使用 Ajax 创建类别时,我的错误消息出现奇怪的行为。

现在我的错误消息如下所示:

在此处输入图像描述

我的 create.js.erb 和 new.js.erb 都有相同的代码,就是这一行:

$(".cc-form").html("<%= escape_javascript(render(:partial => 'categories/form', locals: { category: @category })) %>");

这是我的类别表格:

<%= form_for(@category, :remote => true, :html => { :class => "add-form", :id => "cform" }) do |f| %>
<fieldset>
   <p>
      <%= f.label :name, "Category Name *" %>
      <br />
      <%= f.text_field :name %>
   </p>
   <div class="form-actions">
     <%= f.submit "Create" %>
   </div>
</fieldset>

以下是启用自定义错误 HTML 的代码:

# application.rb

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
   errors = Array(instance.error_message).join(',')
   %(#{html_tag}<span class="validation-error">&nbsp;#{errors}</span>).html_safe
end

然后是 HTML 本身以及错误 HTML:

<p>
  <label for="category_name">Category Name *</label><span class="validation-error">&nbsp;can't be blank</span>
  <br>
  <input id="category_name" name="category[name]" size="30" type="text" value=""><span class="validation-error">&nbsp;can't be blank</span>
</p>

我只想要 . 旁边label而不是右侧的错误消息input。我该怎么做?当我查看它时,格式对我来说很棘手。

谢谢。

4

2 回答 2

1

我猜你用field_error_proc得不好,因为将输入字段包装到具有特殊类的元素中很好。Field_error_proc默认情况下标记标签和输入标记,field_with_error因为引用的对象(:name这意味着category.name具有错误数组)是相同的。这不是缺陷,因为在这种情况下,将标签的颜色更改为红色很有好处。actionpack/lib/action_view/helpers/tags/label.rb我检查了Rails 代码(

对于您的问题,我现在有两种解决方案:

  • 代替

    <%= f.label :name, "类别名称 *" %>

    采用

    <label for="category_name">类别名称 *</label>

    在你看来。

  • 它不太好,但是f.label如果您form .label .validation-error { display: none }在样式表文件中制作,则可以使用。我知道这只是一种解决方法,但如果f.label有必要,那么我不知道更好的解决方案。

于 2012-08-11T18:02:23.900 回答
0

您在页面中有两个这样的<span>标签:

<span class="validation-error">&nbsp;can't be blank</span>

编辑:

好的,看起来标签和输入都需要用自定义错误包装。这里有几个链接:

http://stackoverflow.com/questions/5267998/rails-3-field-with-errors-wrapper-changes-the-page-appearance-how-to-avoid-t

https://gist.github.com/1464315

于 2012-08-04T12:40:31.397 回答