如何在 simple_form 中的错误中转义 HTML 标签
How to escape HTML tags in errors in simple_form
我正在使用 Rails 3.2.22 和 simple_form 2.1.3
我们的一些字段有重复检查,错误包括对重复记录的 link(因此用户可以检查是否只是重复的名称,或者他们是否不需要创建记录).
但是,我们最近从自定义表单生成器切换到简单表单,现在这些错误消息被转义,显示转义错误。
我在a minimal app中重现了这个问题:
在 Doohickey 模型中:
validate :unique_name_validation
def unique_name_validation
other_doohickey = Doohickey.find_by_name(name)
if other_doohickey
errors.add(
:name,
"This name is already taken by <a href='/doohickey/#{other_doohickey.id}'>#{other_doohickey.name}</a>"
)
end
end
在UI:
<%= simple_form_for @doohickey do |form| %>
<%= form.input :name %>
<%= form.button :submit %>
<% end %>
UI 在页面本身显示 HTML...
/config/initializers.rb 中也有一些配置,但我还没有找到关闭此转义的方法。
如何使用简单表单显示 link 错误?
记住内容不会永远为nil,那么你可以使用html_safe
,比如:
"This name is already taken by <a href='/doohickey/#{other_doohickey.id}'>#{other_doohickey.name}</a>".html_safe
我正在使用 Rails 3.2.22 和 simple_form 2.1.3
我们的一些字段有重复检查,错误包括对重复记录的 link(因此用户可以检查是否只是重复的名称,或者他们是否不需要创建记录).
但是,我们最近从自定义表单生成器切换到简单表单,现在这些错误消息被转义,显示转义错误。
我在a minimal app中重现了这个问题:
在 Doohickey 模型中:
validate :unique_name_validation
def unique_name_validation
other_doohickey = Doohickey.find_by_name(name)
if other_doohickey
errors.add(
:name,
"This name is already taken by <a href='/doohickey/#{other_doohickey.id}'>#{other_doohickey.name}</a>"
)
end
end
在UI:
<%= simple_form_for @doohickey do |form| %>
<%= form.input :name %>
<%= form.button :submit %>
<% end %>
UI 在页面本身显示 HTML...
/config/initializers.rb 中也有一些配置,但我还没有找到关闭此转义的方法。
如何使用简单表单显示 link 错误?
记住内容不会永远为nil,那么你可以使用html_safe
,比如:
"This name is already taken by <a href='/doohickey/#{other_doohickey.id}'>#{other_doohickey.name}</a>".html_safe