Ruby on rails 如何在Rails的验证错误中覆盖html格式?

Ruby on rails 如何在Rails的验证错误中覆盖html格式?,ruby-on-rails,validation,Ruby On Rails,Validation,我想知道是否有办法删除rails验证创建的格式?我的HTML在下面,但基本上如果有错误,它会以内置rails的方式格式化我的错误。。。但我不想这样。例如,在下面的示例中,在发生错误时(我不希望这样),password_字段的格式会有所不同,而当我只想打印错误消息的文本时,error_消息的周围会有其他格式。关于如何最好地做到这一点,有什么想法吗 谢谢 - -查看rails指南中的此链接。这将允许您根据自己的喜好自定义错误的html 此示例将保持html表单字段完全相同,即使存在错误 Action

我想知道是否有办法删除rails验证创建的格式?我的HTML在下面,但基本上如果有错误,它会以内置rails的方式格式化我的错误。。。但我不想这样。例如,在下面的示例中,在发生错误时(我不希望这样),password_字段的格式会有所不同,而当我只想打印错误消息的文本时,error_消息的周围会有其他格式。关于如何最好地做到这一点,有什么想法吗

谢谢

-

-

查看rails指南中的此链接。这将允许您根据自己的喜好自定义错误的html

此示例将保持html表单字段完全相同,即使存在错误

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  %(#{html_tag})
end 
接下来,我们可以添加一个助手方法来呈现错误:

def custom_error_message_on(object, method)
  errors = object.errors.on(method)
  "#{ERB::Util.html_escape(errors.is_a?(Array) ? errors.first : errors)}"
end
我基本上只是简单地描述了正常人为满足你的需要所做的事情

现在,您可以在页面中使用它,如下所示:

<%= f.password_field :password %>
<%= custom_error_message_on :user, :password %>

html输出如下所示:

<input type='password' name='password' />
Your password is required

您的密码是必需的
这将允许您放置所需的任何额外标记,并且不会限制您以一种方式对所有表单进行标记


如果有许多表单都遵循相同的模式,那么您可能还需要了解自定义表单生成器。

谢谢,John-我想补充一下我的问题:如果我想在表单和错误之间添加额外的HTML,并且HTML会因表单而异,该怎么办?在上面的例子中,我需要在输入框和错误之间加一个
,但在我的应用程序中,每个表单的中间位置都会有所不同。我已经根据您的评论更新了答案,希望这会有所帮助。