2011-12-13 13 views
4

HAMLは、私がこのような何かを行うことができますObject referenceと呼ばれる優れた機能があります。Hamlオブジェクト参照の使用。 %DIV [@user]

%div[user]= user.name 

をそして、それはこのようなものを生成:時々、私が作成したい

<div id="user_42" class="user">Billy</div> 

をその要素へのアンカーは、次のようになります。

<a href="#user_42">Link to Billy</a> 

どのように私はそれをHamlで行いますか? Haml helpers自動的-含めて行うことができる:これは

%a{ :href=> "#user_#{user.id} } Link to Billy 

編集を?:よりも簡単な方法はありますか?

+0

私は自分の答えを更新しましたが、私はハムヘルパーから遠ざかることを勧めます。彼らはすぐに非常に混乱します。 – Emily

答えて

2

私が知っているこれを行うための組み込みの方法はありません。私はおそらくヘルパーメソッドを作成する場合は、それはあなたがたくさんするだろう何かだ。

def anchor_to(link_text, object) 
    link_to(link_text, "##{object.class.name.underscore}_#{object.id}") 
end 

あなたはより多くのケース(のlink_toにオプションを渡して、など)を処理する必要がある場合は、この方法をより複雑にする可能性がありますが、そのような単純なものは、いくつかのそれをクリーンアップするでしょう。リンクを生成すると、次のようになります。

= anchor_to("Link to Billy", @user) 

あなたはHAMLヘルパーを使用したい場合、あなたは非常によく似た(しかし、はるかに混乱)何かができる:

def anchor_to(link_text, object) 
    capture_haml do 
    haml_tag :a, 'Link to Billy', href: "##{object.class.name.underscore}_#{object.id}" 
    end 
end 

underscore方法が勝ったことを警告すること、が」 Railsの外でこれをやっているなら、私はlink_toヘルパーを避けるために考えている唯一の理由です。

+0

同意すると、さらに複雑になる可能性があります。 – Voldy

関連する問題