我有一个包含很多字段的大表单,我们在rails中找回错误的方式是它们驻留在模型对象中。我想要一个干净的方式来显示除每个字段之外的错误,而不是单独显示。是否有宝石可以做到这一点,如果现在可以做到最好的方式。
我希望除错误所在的字段外还显示每个错误。
答案 0 :(得分:4)
假设您使用的是Rails 3+和Rails表单助手,您不需要任何宝石,也不需要迭代错误集合。
嗯,这并不完全正确,但Rails会为你做到。你只需要提供一个proc。
我将以下内容添加到... / config / application.rb:
# wrap each form field that has an error with the following.
# note, condition for arrays and singletons.
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(<span class="validation-error">#{html_tag}</span>).html_safe
else
%(#{html_tag}<span class="validation-error"> </span>).html_safe
end
end
确保定义CSS类验证错误。这应该让它工作,然后你可以调整它以满足你的需求。请注意,您的CSS可以特定于每种字段类型,例如input,textarea,select等。
当然重启Rails应用程序。
我实际上是在SO的另一个帖子中学到了这个,但我现在找不到它所以我无法提供参考。
答案 1 :(得分:3)
尝试使用simple_form
或formtastic
以简化此操作。有了这些,它会自动完成您正在寻找的东西。
如果你想让你的观点真的很长,或者只是不想使用宝石,你也可以这样做:
<span class="help-inline"><%= @object.errors[:field] %></span>
但那会快得快。