2

Ruby/HAML は初めてで、単純な要件のために部分的な構文を単純化しようとしています。たとえば、変数を渡して次の HTML を出力するパーシャルを作成したいとします。

<figure class="foo">
  <img src="path/to/img.png" />
  <figcaption>caption text here</figcaption>
</figure>

私はヘルパーを作成して、部分的な構文を近似するものにしようとしています:

@(figure).foo {
  img: "path/to/img.png",
  caption: "caption text here"
}

この単純な構文は可能ですか? より良いアプローチはありますか?

4

1 に答える 1

1

もちろん:

figure_helper(:foo, 'path/to/img.png', 'caption text here')

次に、ヘルパーファイルで:

def figure_helper(cls='default_cls', img='rails.png', caption='uh oh! forgot caption!')
<<STMT
  <figure class="#{cls}">
    <img src="#{img}" />
    <figcaption>#{caption}</figcaption>
  </figure>
STMT
end

注:文字列を定義するhereステートメントの構文に慣れていない場合は<<STMT、1列目から終了するようにしてください。

irbで:

1.9.2p0 :016 > def figure_helper(cls='default_cls', img='rails.png', caption='uh oh! forgot caption!')
1.9.2p0 :017?>   <<STMT
1.9.2p0 :018">   <figure class="#{cls}">
1.9.2p0 :019">     <img src="#{img}" />
1.9.2p0 :020">     <figcaption>#{caption}</figcaption>
1.9.2p0 :021">   </figure>
1.9.2p0 :022"> STMT
1.9.2p0 :023?>   end
 => nil 
1.9.2p0 :025 > puts figure_helper(:foo, 'path/to/img.png', 'caption text here')
  <figure class="foo">
    <img src="path/to/img.png" />
    <figcaption>caption text here</figcaption>
  </figure>
 => nil 
于 2012-06-11T04:08:24.750 に答える