gpt4 book ai didi

ruby-on-rails - Rails 3.0 中的 f.error_messages

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

Rails 3.0 弃用了 f.error_messages,现在需要一个插件才能正常工作 - 但是我想学习如何以(新的) native 方式显示错误消息。我正在关注 getting started guide ,它在实现评论表单时使用了已弃用的方法。例如:

<h2>Add a comment:</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= f.error_messages %>
<div class="field">
<% f.label :commenter %><br />
<%= f.text_field :commenter %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

这是正确的做法(由脚手架生成):

<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
. . .

我知道我在后一个示例中使用了 @post 变量,但是在前一个示例中我引用了什么变量来获取创建评论的错误消息?

最佳答案

在表单中实现 error_messages 的最好和干净的方法是在 FormBuilder 中实现 error_messages。

例如,这是我为上一个项目实现的 error_messages 方法。通过实现您自己的 FormBuilder,您可以遵循网页设计师的规则和风格......下面是一个示例,它将使用一些自定义样式在 ul/li 中输出错误列表:

class StandardBuilder < ActionView::Helpers::FormBuilder
def error_messages
return unless object.respond_to?(:errors) && object.errors.any?

errors_list = ""
errors_list << @template.content_tag(:span, "There are errors!", :class => "title-error")
errors_list << object.errors.full_messages.map { |message| @template.content_tag(:li, message) }.join("\n")

@template.content_tag(:ul, errors_list.html_safe, :class => "error-recap round-border")
end
end

然后在我的表单中:

= f.error_messages

仅此而已。

关于ruby-on-rails - Rails 3.0 中的 f.error_messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873190/

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