我正在尝试创建一个简单的菜单,但我遇到了这个问题: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&testPARAM2=testVAL2'>Test2</a>
我已经找了一段时间了,我似乎找不到如何迫使 HAML 不逃脱我的字符串:(
这不是您正在寻找的 100%,但就我个人而言,我会重构它 - 这会让您头疼,无论如何,在帮助程序中渲染 html 根本不理想。
我会更改帮助程序函数以获取您的 YAML 文件或那里发生的任何内容,并输出包含正确项目的最终数组。
做一个 _header.html.haml partial (把它放在一个"共享"的目录中),部分将调用帮助函数,获取数组,并且由于你在一个视图中,你可以用普通技术循环,并使用link_to等,你所有的问题都解决了。
这是一种更干净的做事方式。
刚刚想通了(我希望我在一个多小时之前找到它,但嘿)。对于任何感兴趣的人:
有两个函数html_safe
和raw
可以解决问题。用法如下:
- haml_tag :a, mitem["label"], :href=>link.html_safe
- haml_tag :a, mitem["label"], :href=>raw(link)