web-dev-qa-db-ja.com

<%=?なしでERBで印刷します。

<%%>で印刷する方が便利な場合があります。 Railsでそれを行う方法は?

27
Cheng

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-concat

あなたが探しているものでなければなりません。

例えば。 concatを使用した次のステートメント:

<% concat "Output" %>

と同等です:

<%= "Output" %>
45
Omar Qureshi

ERBの場合:<%%>は、解釈するRubyコードがここにあることを意味します。<%=%>は、出力Rubyコード、つまり結果を表示/印刷します。

したがって、標準のERBファイルで出力する場合は、extra =記号を使用する必要があるようです。

それ以外の場合は、構文が少なくて済むERBの代替案を検討できます。おそらく、HAMLのようなものを試してみてください。 http://haml-lang.com/tutorial.html

Example:

# ERB
<strong><%= item.title %></strong>

# HAML
%strong= item.title

それはもっと便利ですか?

7
Evolve

erb は、インラインRuby式を評価する2つの方法があります。式を評価する<%と、評価して出力する<%=があります。バインディングコンテキスト内に印刷するグローバルオブジェクトはありません。

Omarが述べたように、ActionViewの一部であるconcatメソッドがあります。これはあなたが望むことをします。

スクリプト言語のエスケープとは異なり、erbのデフォルトの出力はありません。 erbは単なる関数であり、テンプレートとバインディングを指定すると変数が返されるため、テキストと関数の値を再帰的に返します。

ビューで許可されるロジックの量については熱い議論がありますが、できるだけ少なくは、ほとんどの人が目指していることです。ビューにテキストよりも多くのコードを配置する場合は、コードのリファクタリングを検討することをお勧めします。

4
brianegge