4

それは出力と関係がありますか?

では、<%= ...code... %>コード実行後の出力に使用され、<% ...code... %>コード実行にのみ使用されますか?

4

3 に答える 3

12

これは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
于 2012-06-28T15:14:37.277 に答える
4

どちらも、その中に含まれているRubyコードを実行します。ただし、式の戻り値の処理方法が異なります。<% ... %>値には何もしません。実行されるドキュメント(通常はまたはドキュメント)<%= ... %>に戻り値を出力します。.erb.rhtml

注意すべき点は<%= ... %>、テキストに含まれるHTMLを自動的にエスケープすることです。条件付きHTMLステートメントを含める場合は、の外で行い<% ... %>ます。

<%= "<br />" if need_line_break %> <!-- Won't work -->

<% if need_line_break %>
<br />
<% end %> <!-- Will work -->
于 2012-06-28T15:15:42.257 に答える
3

<%=単一の式の値を出力するために使用されます。例:

<%= object.attribute %>
<%= link_to 'Link Title', link_path %>

while<%は、任意のRubyコードを実行するために使用されます。

于 2012-06-28T15:05:51.813 に答える