12
私はレール2のいくつかのヘルパーにこのパターンを使用しましたが、レール3で同じように動作していません。私の目標は、内部にネストされたコンテンツを持つヘルパーメソッドをいくつか生成させることです。ここで私が取得しようとしているものの基本的な例です。ヘルパーメソッドはレール3のブロックにどのようにして収穫されますか?
レール2に<div class="box">
my content
</div>
私はこのようにそれを行う:
私のレイアウトファイル内に、私はヘルパーメソッドを呼び出す:
<% box_wrapper do %>
<%= yield -%>
<% end %>
を
ヘルパーメソッドは次のように定義されています。
def box_wrapper
concat <<-EOF.html_safe
<div class="box">
EOF
yield if block_given?
concat <<-EOF.html_safe
</div>
EOF
end
しかし、レール3の
は、ビューがレンダリングされるとき、それは私のページ全体のANを出力dを入力すると、box_wrapper
の内部ですべてのページコンテンツが2回目のレンダリングされます。
私はヘルパーと利回りを使い方が分かりません。何か案は?
R. Batesの推薦を転送するだけです: "UPDATE:" with_output_buffer "の代わりに" capture "メソッドを使うことをお勧めします。これはERBビューの外で働くという利点があります。 – apneadiving
@apneadiving - ありがとう、間違いなく改良。 –
ありがとう!私の本当の使い方は普通のcontent_tagよりも複雑ですが、それは私を始めさせるのに十分でした。 – nimblegorilla