0

コレクションで部分的にレンダリングしようとしていますが、これを行うことはできましたが、私が望む部分よりもループしています。ここに私の部分のコードです:部分的なレンダリングでコレクションを使用する

 <table class="tabs"> 
      <tr> 
       <% if tabs[:label] == selected %> 
        <%= tag("td", :id => "selected") %> 
       <% else %> 
        <%= tag("td") %> 
       <% end %> 
        <span class="before"></span> 
        <span class="middle"> 
         <%= link_to tabs[:label], tabs[:url] %> 
        </span> 
        <span class="after"></span> 
       </td> 

      </tr>   
     </table> 

     <hr /> 

そして、私は(唯一のTDのを反復処理)ことで、タブの行を作成します。代わりに、それはすべてのものを通過し、コレクションの各メンバー用に新しいテーブルを作成します。テーブル、tr、およびhrタグを部分的に削除することなく、これを行うことは可能ですか?

TIA!

答えて

1

私はRuby on Railsを使用していると仮定します。タブはあなたのコレクションの名前です。もしそうなら、あなたは自分の部分にそれらを移動することができます:私はブロックの場合は、お使いのインデントはあなたを教えなければならない何かを取り除くことにより、ロジックを簡素化する方法

<td id="#{ tab[:label] == selected ? 'selected' : '' }" > 
    <span class="before"></span> 
    <span class="middle"><%= link_to tab[:label], tab[:url] %></span> 
    <span class="after"></span> 
</td> 

お知らせが間違っています。この場合、ロジックはhtml構造を反映していませんでした。これは通常、より良い方法があることを意味します。タブは単数形であり、複数形ではありません。この部分的に1つのタブを処理しており、部分的に各タブごとに1回呼び出されます。

最後の一つです:あなたはidで再生するための、いくつかの機能の理由がない限り、それはidのではなく、スタイルで選択を置くことはおそらく良いでしょう。

実装に戻る。あなたがそれをどのように呼び出すかを決定するので、私たちがその部分的な名前を付けることは重要です。この場合は、_tab.html.erb(単数形)とします。

<table class="tabs"> 
    <tr> 
    <%= render tabs %> 
    </tr> 
</table> 

参照してください:それは新しい部分がちょうどこの1行を追加呼び出すようにするには

<table class="tabs"> 
    <tr> 
    </tr> 
</table> 

さて、それは元のファイルにこの左であなたを残し? タブは複数です。テンプレートヘルパーは_tab.html.erb for each tab in tabsを呼び出します。

私はコードをテストしました。あなたはそれで金色になるはずです。

ところで、私の石けん箱に戻ってください...あなたは、もはやレールではなく、もはやタブのために使われているテーブルを見ていません。トレンドは<ul><li>の内部といくつかのCSSスタイルで使用しています。

関連する問題