【发布时间】:2011-09-12 10:06:59
【问题描述】:
当我说:
%p= item.price + " dollars"
我来了
50  ;美元
而不是具有不可破坏的空格符号。
如何使用 HAML 插入这个和另一个特殊符号?
【问题讨论】:
-
好问题-谢谢提问
标签: ruby-on-rails-3 special-characters haml
当我说:
%p= item.price + " dollars"
我来了
50  ;美元
而不是具有不可破坏的空格符号。
如何使用 HAML 插入这个和另一个特殊符号?
【问题讨论】:
标签: ruby-on-rails-3 special-characters haml
您可以在字符串中使用\xa0 而不是 。 0xa0 是不间断空格的 ASCII 码。
【讨论】:
怎么样
%p= item.price + " dollars".html_safe
【讨论】:
插值选项:
%p= "#{item.price} dollars".html_safe
【讨论】:
item.price 的内容标记为html_safe,这就是潜在问题出现的地方。另一个答案将字符串常量标记为 html_safe 这是一个更好的解决方案。
item_price 可能会出现什么问题(如果有的话) - 这只是问题的另一个可能答案。
这个答案是针对一个稍微不同的问题,但我发现这个问题正在搜索它...
如果您有一个提交标签%input{ :type => "submit", :value => " dollars", :name => "very_contrived" },即使您在:value 上抛出html_safe,它也不会评估html。
解决方案是使用 rails helper...duh
= submit_tag " dollars".html_safe
这很明显,但它让我绊倒了。遗留代码 + rails 升级 = 这种东西:P
【讨论】:
使用!= 而不是=
请参阅 haml 参考中的“Unescaping HTML”:http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_html
【讨论】:
我尝试以不同的方式使用html_safe,但都没有奏效。按照 ngn 的建议使用 \xa0 也不起作用,但它让我尝试了不间断空间的 Unicode 转义,这确实有效:
"FOO\u00a0BAR"
甚至不需要.html_safe(当然,除非字符串中的其他内容需要)。
Ruby 编程语言,第一版说:“在 Ruby 1.9 中,双引号字符串可以包含带有 \u 转义的任意 Unicode 转义字符。\u 最简单的形式是后跟正好四个十六进制数字..."
【讨论】:
我更喜欢将字符本身与除空白字符之外的大多数符号一起使用转义的 HTML 方法。这样我就不必记住所有的 html 代码。至于空白字符我更喜欢使用 CSS,这是一种更简洁的方式。
%p&= "#{item.price} $%&#*@"
【讨论】: