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をパーシャルにします(ディレクトリ「shared」に入れます)。パーシャルはヘルパー関数を呼び出し、配列を取得します。ビューにいるので、通常の手法でループし、link_toなどを使用できます。 、そしてあなたのすべての問題は解決されます。

これは物事を行うためのはるかにクリーンな方法です。

于 2012-08-08T01:50:05.680 に答える
0

ちょうどそれを理解しました(私はそれに1時間以上費やす前にそれを見つけたらいいのにと思いますがねえ)。興味のある方へ:

2つの関数がhtml_safeありraw、それがトリックを実行します。次のように使用されます:

  • haml_tag:a、mitem ["label"]、:href => link.html_safe
  • haml_tag:a、mitame ["label"]、:href => raw(link)
于 2012-08-08T03:00:05.157 に答える