1

ここ数日間、この質問の解決策を探していました。単純に面倒くさいけど、やり方がわからないのは嫌だなぁ…

環境: Ruby、Rails、rhtml

問題: rhtml でコレクションを繰り返し処理するときに、使用する <% %> および <%= %> タグの数を減らしたいと考えています。以下は肥大化しているようです:

<% @products.each do |p| %>
  <%=  @p.name %>
<% end %>

編集:ブロック内の <%= %> を除外するにはどうすればよいですか?

私はむしろやりたい:

<% @products.each do |p| 
  puts @p.name 
end %>

特定の状況では、どちらかを使用できます...ただし、jsp を使用してこれを実行できることはわかっています。

<% for(int i=0; i<10;i++){
  System.out.print(i);
} %>

ご意見をお寄せいただきありがとうございます。

4

6 に答える 6

5

冗長になりたくない場合は、hamlを見てください。あなたの例では、次のようになります。

- @products.each do |p|
  = @p.name
于 2009-10-23T19:19:00.827 に答える
2
<% @products.each do |p| 
  _erbout << @p.name 
end %>

_erboutERB (.rhtml テンプレートを解析するクラス) が出力を構築するために使用する変数のデフォルト名です。これはかなり醜く、私には少しハックな気がしますが、うまくいきます。

于 2009-10-23T18:25:40.497 に答える
0

ビューコードが肥大化しすぎているように見える場合は、コンテキストに応じて、他のいくつかの可能性があります。

  • パーシャルを使用します。例えば:

メインファイル内:

<%= render(:partial => "product", :collection => products) %>

部分的には、次を使用します。

<%= product.name %>

これは、このような単純な例では考案されているように見えますが、より複雑なものを想定すると、ループが抽象化され、コードがより明確になります。

  • ヘルパーメソッドを使用する
于 2009-10-23T19:11:33.850 に答える
0

put ではなく print を使用します。

于 2009-10-23T18:26:30.493 に答える
0

テンプレートを (ヘルパーやパーシャルと共に) クリーンアップするために、haml のようなものを使用することもできます。

于 2009-10-23T19:18:34.587 に答える