rails-在ruby代码中将HTML元素环绕在link_to()的文本周围,而不禁用所有转义

zwo*_*wol 5 xss ruby-on-rails ruby-on-rails-5

这是非常基本的,但是我在Rails文档中找不到任何运气。有一个视图帮助器方法(Ruby代码,不是 HAML)返回

link_to(user_controlled_text, destination, options)
Run Code Online (Sandbox Code Playgroud)

并且我需要将HTML元素(即<bdi>)包装在周围user_controlled_text。如果我做

link_to("<bdi>#{user_controlled_text}</bdi>", ...)
Run Code Online (Sandbox Code Playgroud)

那么我的元素将被视为要转义的用户控制文本的一部分。很公平。我该如何告诉Rails不要逃避<bdi>并且</bdi>仍然逃避user_controlled_text

max*_*max 3

使用content_tag

link_to(content_tag(:bdi, user_controlled_text), destination)

# or with a block
link_to(destination) do
  content_tag(:bdi, user_controlled_text)
end
Run Code Online (Sandbox Code Playgroud)