Ruby on rails 如何在Rails的验证错误中覆盖html格式?
我想知道是否有办法删除rails验证创建的格式?我的HTML在下面,但基本上如果有错误,它会以内置rails的方式格式化我的错误。。。但我不想这样。例如,在下面的示例中,在发生错误时(我不希望这样),password_字段的格式会有所不同,而当我只想打印错误消息的文本时,error_消息的周围会有其他格式。关于如何最好地做到这一点,有什么想法吗 谢谢 -Ruby on rails 如何在Rails的验证错误中覆盖html格式?,ruby-on-rails,validation,Ruby On Rails,Validation,我想知道是否有办法删除rails验证创建的格式?我的HTML在下面,但基本上如果有错误,它会以内置rails的方式格式化我的错误。。。但我不想这样。例如,在下面的示例中,在发生错误时(我不希望这样),password_字段的格式会有所不同,而当我只想打印错误消息的文本时,error_消息的周围会有其他格式。关于如何最好地做到这一点,有什么想法吗 谢谢 - -查看rails指南中的此链接。这将允许您根据自己的喜好自定义错误的html 此示例将保持html表单字段完全相同,即使存在错误 Action
-查看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会因表单而异,该怎么办?在上面的例子中,我需要在输入框和错误之间加一个
,但在我的应用程序中,每个表单的中间位置都会有所不同。我已经根据您的评论更新了答案,希望这会有所帮助。