gpt4 book ai didi

ruby-on-rails - 如何更改我的自定义错误 html 使其不呈现两次?

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:55 25 4
gpt4 key购买 nike

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

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

enter image description here

我的 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 的右侧。我该怎么做?当我查看时,这种格式对我来说很棘手。

谢谢。

最佳答案

我猜你用错了 field_error_proc ,因为将输入字段包装到具有特殊类的元素中是很好的。 Field_error_proc 默认情况下使用 field_with_error 标记标签和输入标签,因为引用的对象(:name 表示 category.name有错误数组)是一样的。这不是缺陷,因为在这种情况下它有利于将标签的颜色更改为红色。我检查了 Rails 代码 (actionpack/lib/action_view/helpers/tags/label.rb),你不能为标签关闭这个行为(它可能是一个功能请求),所以我猜如果您对标签使用纯 html,则只有一种解决方案可以解决您的问题。

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

  • 代替

    <%= f.label :name, "Category Name *" %>

    使用

    <label for="category_name">Category Name *</label>

    在你看来。

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

关于ruby-on-rails - 如何更改我的自定义错误 html 使其不呈现两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11806122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com