首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails -在不禁用所有转义的情况下,用ruby代码围绕link_to()文本包装HTML元素。

rails -在不禁用所有转义的情况下,用ruby代码围绕link_to()文本包装HTML元素。
EN

Stack Overflow用户
提问于 2018-02-27 18:56:38
回答 3查看 311关注 0票数 5

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

代码语言:javascript
复制
link_to(user_controlled_text, destination, options)

我需要将一个HTML元素(即<bdi>)封装在user_controlled_text周围。如果我做了

代码语言:javascript
复制
link_to("<bdi>#{user_controlled_text}</bdi>", ...)

然后,我的元素被视为要转义的用户控制文本的一部分。当然可以。如何告诉Rails不要转义<bdi></bdi>,但仍然要转义user_controlled_text

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-27 19:42:47

使用content_tag

代码语言:javascript
复制
link_to(content_tag(:bdi, user_controlled_text), destination)

# or with a block
link_to(destination) do
  content_tag(:bdi, user_controlled_text)
end
票数 3
EN

Stack Overflow用户

发布于 2018-02-27 19:04:11

试试link_to("<bdi>#{h user_controlled_text}</bdi>".html_safe, ...)

如果h不能工作,请使用ERB::Util::h

票数 2
EN

Stack Overflow用户

发布于 2018-02-28 03:54:46

我同意前两个答案,如果链接目标很难适应name参数,也可以使用块。我用了如下所示

代码语言:javascript
复制
<%= link_to(destination) do %>
    <bdi>
        <%= user_controlled_text %>
    </bdi>
<% end %>

但是我知道这不是一个有效的HTML在a href标记中的使用。

以下是完整的参考资料

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49016037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档