それは出力と関係がありますか?
では、<%= ...code... %>
コード実行後の出力に使用され、<% ...code... %>
コード実行にのみ使用されますか?
それは出力と関係がありますか?
では、<%= ...code... %>
コード実行後の出力に使用され、<% ...code... %>
コード実行にのみ使用されますか?
これはERBテンプレートマークアップ(Railsでサポートされている多くのテンプレート言語の1つ)です。このマークアップ:
<% ... %>
Ruby式を評価するために使用されます。ただし、その式の結果は何も行われません。対照的に、マークアップ:
<%= ... %>
同じことを行います(そこにあるRubyコードを実行します)がto_s
、結果を呼び出し、マークアップを結果の文字列に置き換えます。
要するに:
<% just run code %>
<%= run code and output the result %>
例えば:
<% unless @items.empty? %>
<ul>
<% @items.each do |item| %>
<li><%= item.name %></li>
<% end %>
</ul>
<% end %>
対照的に、上記と同等のHamlマークアップは次のとおりです。
- unless @items.empty?
%ul
- @items.each do |item|
%li= item.name
どちらも、その中に含まれているRubyコードを実行します。ただし、式の戻り値の処理方法が異なります。<% ... %>
値には何もしません。実行されるドキュメント(通常はまたはドキュメント)<%= ... %>
に戻り値を出力します。.erb
.rhtml
注意すべき点は<%= ... %>
、テキストに含まれるHTMLを自動的にエスケープすることです。条件付きHTMLステートメントを含める場合は、の外で行い<% ... %>
ます。
<%= "<br />" if need_line_break %> <!-- Won't work -->
<% if need_line_break %>
<br />
<% end %> <!-- Will work -->
<%=
単一の式の値を出力するために使用されます。例:
<%= object.attribute %>
<%= link_to 'Link Title', link_path %>
while<%
は、任意のRubyコードを実行するために使用されます。