Railsキャプチャヘルパーを使用していますが、構文が間違っています。なぜ印刷されているのかわかりませんone
。Rails 3.4では、何も出力されません。
これが正しい使い方です
<% @number = capture do %>
three
<% end %>
this is some html and here is my <%= @number %>
レンダリングされるhtmlは
this is some html and here is my three
構文が間違っているので、なぜ「1つ」が表示されるのか心配する必要はありません。代わりに、キャプチャヘルパーを正しく使用することに重点を置きます。
編集:
2番目の(編集された)例は、最初の例と同じではありません。これは行番号と最後の行へのわずかな変更で、何が起こっているかを確認できます。
1. <% my_string = "" %>
2. <% my_string << capture do %>
3. Hello
4. <% end %>
5. before <%= my_string %> after
結果はHello before Hello after
です。したがって、3行目がレンダリングされ、次に5行目がmy_string
値を含むようにレンダリングされますHello
。
これに変更すると
<% my_string = "" %>
<% my_string = capture do %> <!-- changed << to = -->
Hello
<% end %>
before <%= my_string %> after
その結果はbefore Hello after
です。
では、これはどういう意味ですか?使用する<<
と、メソッドが台無しになりcapture
、通常は予期しない場合でも、キャプチャブロック内にあるものがレンダリングされます。
基本的に、少なくとも現在の構文では、ここで実行しようとしていることを実行することはできません。