4

Railsビューのいくつかの行で、これが使用されていることに気付きました:

<% # Code... -%> 

それ以外の:

<% # Code... %>

違いはなんですか?

4

4 に答える 4

17
    <ul>
    <% @posts.each do |post| -%> 
      <li><%=post.title%></li>
    <% end -%>
    </ul>

<ul>最初の<li>and と最後の閉じの</li>andの間に新しい行はありません</ul>。- を省略した場合は、あります。

于 2008-11-21T07:23:17.693 に答える
8

ERB でコードを評価するためのさまざまなオプションは次のとおりです (Ctrl-Shift-. を使用して Textmate でアクセスできます)。

  • <% %> 内容だけ評価します。
  • <%= %> 内容を評価し、結果を出します。
  • <%= -%>内容を評価し、結果を出力します。
  • <%# %> 内容はコメントとして扱われ、出力されません。

と の違いに注意してputsくださいprint。Puts は常に文字列の最後に新しい行を追加しますが、print は追加しません。

基本的に、-%>言うことは最後に新しい行を出力しません。

于 2008-11-22T11:15:02.050 に答える
2

このことを考慮

<div>
    <% if @some_var == some_value %>
    <p>Some message</p>
    <% end %>
</div>

@some_var が some_value の場合、上記のコードは以下の HTML になります。

<div>

    <p>Some message</p>

</div>

終了タグに - を入れた場合、ERB インタープリターは - を含むコード タグを持つ行の新しい行を削除し、次のようになります。

<div>       
    <p>Some message</p>        
</div>

これは、見栄えの良い HTML コードが必要な場合に便利です。デザイナーと一緒に作業するときに役立つ場合があります

お役に立てれば。

于 2008-11-22T10:41:48.760 に答える
1

少し遅れましたが、これもできることを指摘する価値があると思います:

<%- @posts.each do |post| -%>
  <li><%= post.title %></li>
<%- end %>

これにより、前の空白が取り除かれます。

于 2008-11-26T16:18:17.520 に答える