Вывести строку, если в нуле указано нулевое значение - PullRequest
3 голосов
/ 21 декабря 2011

У меня есть следующая таблица, в которой отображаются результаты совпадений и выбранные для них совпадения для вошедшего в систему пользователя. Я хочу отобразить текстовое значение в столбцах selection.winner и selection.value, когда в базе данных не найдено связанной записи, но я не уверен, как это сделать. Мой код выглядит следующим образом:

<% 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 %>

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Вы хотите отобразить любую строку, если поле базы данных равно нулю ??Если да, вы можете использовать,

<%= selection.winner || 'string' %>
<%= selection.value || 'string' %>
1 голос
/ 21 декабря 2011

Вы можете поместить результаты поиска 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 %>

Я поставил <% и %> в каждой строке, потому что я думаю, что это понятнее. Вы можете просто использовать один для каждого блока кода, например:

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

Я не уверен, сколько пользовательских настроек у вас есть для конкретного прибора, но он найдет их все, поэтому, если есть нагрузки, вы получите их все, что приведет к низкой производительности и массивной строке в вашей таблице. Вы знаете свои данные лучше меня, хотя, может быть, есть ограничение на выбор пользователя.

...