Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在属性哈希中取消转义HAML

在属性哈希中取消转义HAML
EN

Stack Overflow用户
提问于 2013-05-16 12:15:57
回答 2查看 1.6K关注 0票数 7

我有一个与我在堆栈溢出中发现的问题相似的问题,但不是完全相同。我想避免以下问题的解决办法:

https://stackoverflow.com/a/10407782/996587

基本上,希望获得以下HTML输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class='myclass' extraattr='UNESCAPED <>& CONTENT'>
    Content...
</div>

我使用的HAML如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.myclass{ "extraattr" => "UNESCAPED <>& CONTENT" }
  Content...

我不太清楚如何让内容以我想要的方式输出。尝试将.html_safe应用于字符串的末尾,但得到了以下错误:

用于“`html_safe <>& CONTENT”的未定义方法<>&:String

后来意识到,对于这个特定的应用程序,我不使用Rails,只使用ruby + HAML。(我继承了这个项目,我刚刚开始学习HAML、ruby和Rails )

同样,对于那些懒得点击链接并且没有阅读我提到的解决方案的人来说,我不希望配置HAML来避免整个文件的吸引,而仅仅是这个属性。

谢谢!

更新

我刚刚找到了:普通过滤器,并且能够用它得到我想要的。但是,如果有一个技巧我不知道,所以我不需要写所有的HTML,我会感激它。我的“解决办法”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:plain
  <div class='myclass' extraattr='UNESCAPED <>& CONTENT'>
    Content...
  </div>
EN

回答 2

Stack Overflow用户

发布于 2013-05-17 12:04:25

在Rails之外的Haml中,没有(目前)任何方法关闭单个属性的转义,而是使用:escape_attrs选项。根据您想要的内容,它可能值得一看 option

当在Rails中使用Haml时,它会将html转义方法替换为一些尊重html_safe添加的ActiveSupport值的方法(参见lib/haml/helpers/xss_mods.rb)。

如果您愿意,可以在Rails之外使用这些方法。您需要将html_safehtml_safe?方法添加到String类中才能工作(这里要小心,这个示例只是Rails提供的完整XSS保护的“可怜的人”版本,它不会真正保护您不受太多的影响,但它将允许对属性进行选择性转义)。

在需要Haml之后的某个位置添加以下内容(可能最好在需要它自己的文件中添加):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class String
  def html_safe?
    defined?(@html_safe) && @html_safe
  end

  def html_safe
    @html_safe = true
    self
  end
end

require 'haml/helpers/xss_mods'

module Haml::Helpers
  include Haml::Helpers::XssMods
end

现在您可以在您的字符串上使用html_safe,而Haml不会转义它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.myclass{ "extraattr" => "UNESCAPED <>& CONTENT".html_safe,
          "otherextraattr" => "ESCAPED <>& CONTENT"}
  Content...

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class='myclass' extraattr='UNESCAPED <>& CONTENT' otherextraattr='ESCAPED &lt;&gt;&amp; CONTENT'>
  Content...
</div>
票数 6
EN

Stack Overflow用户

发布于 2013-05-16 14:45:22

您是否尝试过使用\来转义字符。

{ :myattr => '\<\>\&' }

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

https://stackoverflow.com/questions/16596659

复制
相关文章
为什么 Java 中 1000==1000 为 false ?
基本知识:我们知道,如果两个引用指向同一个对象,用 == 表示它们是相等的。如果两个引用指向不同的对象,用 == 表示它们是不相等的,即使它们的内容相同。
后端码匠
2020/09/24
6070
为什么 Java 中 1000==1000 为 false ?
为什么 Java 中 1000==1000 为 false ?
基本知识:我们知道,如果两个引用指向同一个对象,用 == 表示它们是相等的。如果两个引用指向不同的对象,用 == 表示它们是不相等的,即使它们的内容相同。
程序猿DD
2023/04/04
4120
为什么 Java 中 1000==1000 为 false ?
为什么Java中1000==1000为false而100==100为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
Leetcode名企之路
2020/09/04
6060
为什么 Java 中“1000==1000”为false,而”100==100“为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
周辰晨
2022/09/20
4880
为什么 Java 中1000==1000为false,而100==100为true?
基本知识:我们知道,如果两个引用指向同一个对象,用 == 表示它们是相等的。如果两个引用指向不同的对象,用 == 表示它们是不相等的,即使它们的内容相同。
终码一生
2022/04/14
3570
为什么 Java 中“1000==1000”为false,而”100==100“为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
肉眼品世界
2022/03/29
4710
为什么Java中1000==1000为false而100==100为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
哲洛不闹
2018/09/18
5880
为什么 Java 中“1000==1000”为false,而”100==100“为true?
为什么 Java 中“1000==1000”为false,而”100==100“为true? 这是一个挺有意思的讨论话题。
Java小咖秀
2020/09/10
5980
为什么Java中1000==1000为false,而100==100为true?
codeceo.com/article/why-java-1000-100.html
程序员小猿
2021/01/20
6140
为什么 Java 中“1000==1000”为false,而”100==100“为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
炒香菇的书呆子
2022/04/17
5310
为什么Java中1000==1000为false而100==100为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
Java后端技术
2018/08/09
5380
为什么Java中1000==1000为false而100==100为true?
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
哲洛不闹
2018/09/19
5510
为什么 Java 中“1000==1000”为false,而”100==100“为true?
为什么 Java 中“1000==1000”为false,而”100==100“为true? 这是一个挺有意思的讨论话题。
开发者技术前线
2020/11/24
5110
为什么 Java 中“1000==1000”为false,而”100==100“为true?
为什么Java中1000==1000为false而100==100为true?
原文:Why 1000 == 1000 Returns False, but 100 == 100 Returns True in Java? 作者:Bazlur Rahman 译文:http://w
顶级程序员
2018/05/03
7320
为什么1000 == 1000返回为False,而100 == 100会返回为True?
这是我们今天要讨论的话题,因为我觉得它非常的有趣。 如果你运行如下代码: Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到以下运行结果: false true 我们知道,如果两个引用指向同一个对象,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。因此,结果
顶级程序员
2018/04/26
1.7K0
问号脸:为什么 Java 中 “1000==1000” 为 false,而 ”100==100“ 为 true?
为什么 Java 中“1000==1000”为false,而”100==100“为true? 这是一个挺有意思的讨论话题。
java进阶架构师
2020/09/30
5630
问号脸:为什么 Java 中 “1000==1000” 为 false,而 ”100==100“ 为 true?
(十一)sleep(1)、sleep(0)和sleep(1000)的区别
操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片算法,Windows属于抢占式。
HaC
2020/12/30
6.8K0
1000套精品海报模板(超10G)
海报都是PSD格式,少数JPG格式。 获取方式(二选一) ①加小编支付1元获取软件。 ②分享文章至朋友圈获得2个赞(推荐) 注:添加小编请直接转发文章小编,小编才知道你要这个!如出现链接失效请及时联
七月半夏
2018/06/29
5700
Github上star数超1000的Android列表控件
Android开发中,列表估计是最最常使用到的控件之一了。列表相关的交互如下拉刷新,上拉更多,滑动菜单,拖动排序,滑动菜单,sticky header分组,FAB等等都是十分常见的体验。Github中有大量优秀的开源项目,今天就来看看star数超1000的Android列表控件都有哪些。
阳仔
2019/07/31
1.3K0
Github上star数超1000的Android列表控件
新型 Linux 病毒,脚本超 1000 行,功能复杂
俄罗斯杀毒软件公司 Dr.Web 近日公开了一个被称为 Linux.BtcMine.174 的新型木马,相比传统恶意 Linux 病毒,它更加复杂,同时也包含了大量恶意功能。
用户6543014
2019/10/25
8560
新型 Linux 病毒,脚本超 1000 行,功能复杂

相似问题

找不到元素的架构信息

20

找不到元素的架构信息

23

BizTalk架构开发找不到元素的架构信息

18

找不到元素'elmah‘的架构信息

23

找不到元素'shape‘的架构信息

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文