gpt4 book ai didi

ruby-on-rails - 如何从字符串中剥离 & ?

转载 作者:行者123 更新时间:2023-12-03 16:09:03 26 4
gpt4 key购买 nike

使用 RoR 2.3.8
name具有值 Tiffany & Co.
此代码在 View 中:

@header_title = 'Related shops with ' + strip_tags(@shop.name)

产生结果 A:
#note that the & has NOT been stripped
Related shops with Tiffany & Co.

此代码在 View 中:
@header_title = strip_tags(@shop.name) + 'Related shops with '

产生结果 B:
#note that the & HAS been stripped
Tiffany & Co. Related shops with

我其实想要 Related shops with Tiffany & Co. (即将 & 转换为 & )

我该怎么做呢?

为什么在第二个电话中, &被剥夺了,但在第一次通话中不是这样?

最佳答案

一个猜想:

@header_title = ('Related shops with ' + strip_tags(@shop.name)).html_safe

在您的示例中 &在任何一种情况下都没有真正被剥离。如果字符串没有被标记为 html 安全,它在添加到 View 时默认会被转义,所以 &变成 &如果您检查页面源。

替代当 @header_title不是 html 安全的,您将其添加到 erb View 中:
<%= raw @header_title %>

这种“html 安全性”与 Rails XSS 保护有关:
  • http://railscasts.com/episodes/204-xss-protection-in-rails-3

  • 请注意,您应该使用 html_saferaw仅当您信任字符串的内容时。

    - 编辑

    在 Rails 3 控制台中测试后编辑了答案。仍然不知道为什么订单在那里很重要。
    ruby-1.8.7-p330 :020 > ('Related shops with ' + helper.strip_tags("Tiffany &amp; Co.")).html_safe?
    => false
    ruby-1.8.7-p330 :021 > (helper.strip_tags("Tiffany &amp; Co.") + 'Related shops with ').html_safe?
    => true
    ruby-1.8.7-p330 :022 > ('Related shops with ' + helper.strip_tags("Tiffany &amp; Co.")).html_safe.html_safe?
    => true

    --edit2

    进一步测试.. 连接安全和不安全字符串时看起来顺序很重要。
    ruby-1.8.7-p330 :037 > safe = "This is html safe string".html_safe
    => "This is html safe string"
    ruby-1.8.7-p330 :038 > not_safe = "This is not html safe string"
    => "This is not html safe string"
    ruby-1.8.7-p330 :039 > (safe + not_safe).html_safe?
    => true
    ruby-1.8.7-p330 :040 > (not_safe + safe).html_safe?
    => false

    关于ruby-on-rails - 如何从字符串中剥离 & ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598460/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com