导轨可防止 HAML 转义链路(带帮助程序haml_tag)



我正在尝试创建一个简单的菜单,但我遇到了这个问题: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 逃脱我的字符串:(

我知道

这不是您正在寻找的 100%,但就我个人而言,我会重构它 - 这会让您头疼,无论如何,在帮助程序中渲染 html 根本不理想。

我会更改帮助程序函数以获取您的 YAML 文件或那里发生的任何内容,并输出包含正确项目的最终数组。

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

这是一种更干净的做事方式。

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

有两个函数html_saferaw可以解决问题。用法如下:

  • haml_tag :a, mitem["label"], :href=>link.html_safe
  • haml_tag :a, mitem["label"], :href=>raw(link)

最新更新