Rails阻止HAML转义链接(w / helper haml_tag)

时间:2012-08-08 01:31:55

标签: ruby-on-rails ruby haml

我试图创建一个简单的菜单,但我遇到了这个问题: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

par是{"testPARAM1"=>"testVAL1","testPARAM2"=>"testVAL2"}

可悲的是输出

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

我现在已经找了一段时间,我似乎无法找到如何强迫HAML NOT 逃避我的字符串:(

2 个答案:

答案 0 :(得分:1)

我知道这不是你想要的100%,但我个人会重构这一点 - 这会让你头疼,无论如何,在帮助器中渲染html并不理想。

我将更改辅助函数以获取您的YAML文件或其中的任何内容,并输出包含正确项目的最终数组。

创建_header.html.haml部分(将其放在目录'shared'中),partial将调用辅助函数,获取数组,并且因为您在视图中,您可以使用常规技术循环,并使用link_to等等,你所有的问题都解决了。

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

答案 1 :(得分:0)

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

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

  • haml_tag:a,mitem [“label”],:href =&gt; link.html_safe
  • haml_tag:a,mitem [“label”],:href =&gt; raw(link)
相关问题