0

我正在尝试创建一个简单的菜单,但遇到了这个问题:HAML 不断转义我到 html 实体的链接。我有一个应该生成菜单的助手:

def buildMainMenu(file=Rails.root.join("config","menu.yaml"))
    ... some operations ...

    link = url_for par.merge({:controller=>mitem["controller"], :action=>mitem["action"]})

    ... some more operations yay ...

    haml_tag :a, mitem["label"], :href=>link 
end

面值是{"testPARAM1"=>"testVAL1","testPARAM2"=>"testVAL2"}

可悲的是输出是

<a href='/test/test1?testPARAM1=testVAL1&amp;testPARAM2=testVAL2'>Test2</a>

我已经找了一段时间了,我似乎找不到如何强制 HAML逃避我的字符串:(

4

2 回答 2

1

我知道这不是 100% 您正在寻找的东西,但我个人会重构它 - 这会让您头疼,无论如何,在帮助程序中呈现 html 一点也不理想。

我会更改辅助函数以获取您的 YAML 文件,或者那里发生的任何事情,并输出一个包含正确项目的最终数组。

制作一个 _header.html.haml 部分(将其放在“共享”目录中),部分将调用辅助函数,获取数组,并且由于您在视图中,您可以使用普通技术循环,并使用 link_to 等,你所有的问题都解决了。

这是一种更清洁的做事方式。

于 2012-08-08T01:50:05.680 回答
0

刚刚想通了(我希望我在花了一个多小时之前就找到了它,但是嘿)。对于任何有兴趣的人:

有两个功能可以解决html_safe问题raw。使用如下:

  • haml_tag :a, mitem["label"], :href=>link.html_safe
  • haml_tag :a, mitem["label"], :href=>raw(link)
于 2012-08-08T03:00:05.157 回答