Ruby on rails rails—在ruby代码中,将HTML元素包装在link_to()的文本周围,而不禁用所有转义
这是非常基本的,但我在Rails文档中找不到任何东西。有一个视图助手方法(Ruby代码,而不是HAML)返回Ruby on rails rails—在ruby代码中,将HTML元素包装在link_to()的文本周围,而不禁用所有转义,ruby-on-rails,ruby-on-rails-5,xss,Ruby On Rails,Ruby On Rails 5,Xss,这是非常基本的,但我在Rails文档中找不到任何东西。有一个视图助手方法(Ruby代码,而不是HAML)返回 link_to(user_controlled_text, destination, options) 我需要在用户控制的文本周围包装一个HTML元素(即)。如果我这样做 link_to("<bdi>#{user_controlled_text}</bdi>", ...) link_to(“#{user_controlled_text},…) 然后,我的元素
link_to(user_controlled_text, destination, options)
我需要在用户控制的文本
周围包装一个HTML元素(即
)。如果我这样做
link_to("<bdi>#{user_controlled_text}</bdi>", ...)
link_to(“#{user_controlled_text},…)
然后,我的元素被视为要转义的用户控制文本的一部分。很公平。我如何告诉Rails不要逃避
和
,但仍然逃避用户控制的\u文本
?尝试链接到(“{h user\u controlled\u text}.html\u safe,”
)
如果h
不起作用,请使用ERB::Util::h
使用:
我同意前两个答案,如果链接目标很难放入name参数,也可以使用block。我用过下面这样的方法
<%= link_to(destination) do %>
<bdi>
<%= user_controlled_text %>
</bdi>
<% end %>
但我知道这不是一个有效的HTML,例如div在a href
标记中使用
这是完整的参考资料
<%= link_to(destination) do %>
<bdi>
<%= user_controlled_text %>
</bdi>
<% end %>