Как я могу отображать информацию из двух связанных таблиц базы данных в одной таблице HTML - PullRequest
0 голосов
/ 20 декабря 2011

Я только начинаю использовать Ruby on Rails и привыкаю к ​​языку, над которым работаю в небольшой футбольной игре с предсказанием. Правила игры заключаются в том, что из 10 выбранных матчей каждую неделю пользователь должен выбрать результат (HOME / AWAY / DRAW), который, по его мнению, будет иметь значение, и назначить значение от 1 до 10 для каждого прибора, причем каждый номер может быть разрешен только для используется один раз.

Краткий обзор моих моделей выглядит следующим образом: ПОЛЬЗОВАТЕЛИ: имя пользователя, электронная почта, шифрованный_пароль, соль, созданный_ат, обновленный_ат КОМАНДЫ: имя, созданный, обновленный ИСПРАВЛЕНИЯ: дата, home_team, away_team, weekno, результат, победитель, create_at, updated_at GAMEWEEKS: число, совпадения, крайний срок, созданы_, обновлены_ ВЫБОРЫ: ИД-пользователя, GameWeekno, Fixtureno, победитель, значение, созданный_ат, обновленный_ат

У меня настроена страница показа, чтобы на ней отображались приборы от выбранной недели. , т. Е. Приборы недели 17 доступны через / gameweeks / 17 , и теперь я хочу показать выбор пользователей для этих приборов. рядом, но столкнулись с некоторыми трудностями. Мой код следующий для страницы шоу:

<%= notice %></p></p> <pre><code><h1>Gameweek <%= @gameweek.number %></h1> <p> <b>Number of matches:</b> <%= @gameweek.matches %> <b>Deadline Date:</b> <%= @gameweek.deadline.strftime("%d/%m/%Y") %> <b>Deadline Time:</b> <%= @gameweek.deadline.strftime("%H:%M") %> </p> <table width="100"> <tr> <th>Date</th> <th>Kick Off</th> <th>Home</th> <th></th> <th>Away</th> <th>Result</th> <th>Prediction</th> <th>Value</th> </tr> <% 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).each do |fixture| %> <td width="10"><%= selection.winner %></td> <td width="10"><%= selection.value %></td> </tr> <% end %> </table> <%= link_to 'Edit', edit_gameweek_path(@gameweek) %> | <%= link_to 'Back', gameweeks_path %>

Кто-нибудь с советами, как я мог бы правильно вызвать значение выбора для соответствующего прибора, гарантируя, что это был current_user?

1 Ответ

1 голос
/ 20 декабря 2011

Это не обязательно лучший способ сделать это (много логики в представлениях, но вы можете изменить вышеупомянутую часть вашего кода на это:

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

Мне пришлось исправить некоторые основные синтаксические проблемы. Опять же, чем больше вы продвинетесь в рельсах, тем больше вы поймете, где должна находиться логика, и, надеюсь, узнаете, что это НЕ САМЫЙ эффективный способ решения этой проблемы.

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...