Ruby on Rails: Увеличьте значение объекта в эшафот с помощью button_to

У меня есть эшафот, который создает таблицу баскетбольных команд. Я хочу реализовать кнопку в таблице, которая увеличивает количество выигрышей для команды и еще одну для потерь. По умолчанию в контроллере обе установлены на 0. Должен ли я реализовать метод в контроллере или в представлении (add_wins и add_losses)? Если так, как это будет выглядеть? Благодарю вас. Это код для тела таблицы в представлении:

<tbody>
<% @teams.each do |team| %>
  <tr>
    <td><%= team.Name %></td>
    <td><%= team.Color %></td>
    <td><%= team.Players %></td>
    <td><%= team.Wins %></td>
    <td style="font-size: 20px"><%= button_to '+', method: :add_wins %></td> <!-- The method add_wins doesn't exist. -->
    <td><%= team.Losses %></td>
    <td style="font-size: 20px"><%= button_to '+',method: :add_losses %></td> <!-- The method add_losses doesn't exist. -->
    <td><%= link_to 'Show', team %></td>
    <td><%= link_to 'Edit', edit_team_path(team) %></td>
    <td><%= link_to 'Delete', team, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

1 ответ

Решение

Не полностью скопированный ответ, но я постараюсь объяснить основы, так что, надеюсь, вы сами сможете найти решение полностью.

Прежде всего, я бы посоветовал вам не внедрять отдельные add_wins, add_losses методы как эти:

  1. Слишком много загромождать ваш контроллер
  2. Не справляйтесь с проблемами подключения / перезагрузки (подумайте, если у вас есть 0 потери, нажмите add, что-то не так с отображением ответа, счетчик обновлен до 1, но пользователь возвращается на предыдущую страницу, видит 0 снова и щелкает add опять же, вы бы в конечном итоге 2 вместо 1,

Вместо этого придерживайтесь стандарта update действие с правильными параметрами.

Вот документы для button_to, вам придется установить правильное method а также params, Ваш params необходимо содержать следующее значение для потерь или побед и идентификатор команды. Кроме того, вы можете подтвердить, что кто-то не пытается отправить какое-то произвольное значение для выигрыша или проигрыша. method вы хотите использовать это put,

Другие вопросы по тегам