2011-12-21 18 views
3

次の表には、一致した結果とサインインしたユーザーの一致の選択肢が表示されています。関連するレコードがデータベースに見つからないときにselection.winnerおよびselection.value列にテキスト値を表示したいが、これを行う方法がわからない。次のように私のコードは次のとおりです。db内のヌル値の場合の表示文字列

<% Fixture.where(:weekno => @gameweek.number).each do |fixture| %> 
    <tr> 
    <td width="10"><%= fixture.date.strftime("%d/%m/%Y")%></td> 
     <td width="10"><%= fixture.date.strftime("%H:%M") %></td> 
     <td width="80"><%= fixture.home_team %></td> 
     <td width="10">Vs.</td> 
     <td width="80"><%= fixture.away_team %></td> 
     <td width="10"><%= fixture.result %></td> 
     <% Selection.where(:userid => current_user.id, :fixtureno => fixture.id).each do |selection| %>  
      <td width="10"><%= selection.winner %></td>  
      <td width="10"><%= selection.value %></td> 
     <% end %> 
    </tr> 
<% end %> 

答えて

1

あなたはそれに対して変数とテストへSelectionのルックアップの結果を置くことができます。

<% user_selections = Selection.where(:userid => current_user.id, :fixtureno => fixture.id) %> 
<% if user_selections.empty? %> 
    <td>You have no selections for this match.</td> 
<% else %> 
    <% user_selections.each do |selection| %> 
    <td width="10"><%= selection.winner %></td>  
    <td width="10"><%= selection.value %></td> 
    <% end %> 
<% end %> 

私は各ライン上の<%%>を入れているので、Iそれがはっきりしていると思う。私はあなたが特定のフィクスチャのために持っているどのように多くのユーザーの選択はよく分からない

<% else 
    user_selections.each do |selection| %> 

しかし、あなたはよ負荷があるかどうこれはので、それらすべてを見つける:あなたは、たとえば、しかしコードのブロックごとに1を使用することができますパフォーマンスを低下させ、テーブルの大きな行を引き起こすすべてのものを手に入れてください。あなたはあなたのデータを私よりもよく知っていますが、おそらくユーザーの選択には限界があります。

+0

ねえShadwellのおかげでたくさんあなたの助けのために、これは私の問題を解決した:)これが問題になることはありませんので、私はgameweekユーザーあたり1つだけ選択をしているつもりであるが頭に感謝 –

3

データベースフィールドがnilの場合は任意の文字列を表示しますか? はいあなたが使用できる場合は、

<%= selection.winner || 'string' %> 
<%= selection.value || 'string' %> 
+1

モデル内のアクセサに過負荷がかかる場合があるので、「デフォルト」の値を表示するすべてのビューでこのロジックを繰り返す必要はありません。 – Pavling

+0

上記のコードスニペットを試しましたが、列が空白になっているので機能していないようです –

関連する問題