#ruby-on-rails #checkbox
#ruby-on-rails #флажок
Вопрос:
Итак, у меня есть модель пользователей, которая связана с действиями, а действия связаны с завершенной моделью ?.
То, что я пытаюсь сделать, это обновить, если действие завершено при нажатии флажка.
Вот мое мнение:
<% @user.completeds.each do |task| %>
<tr>
<td><%= task.activity.name %></td>
<td><%= task.activity.type.name %></td>
<td><%= task.activity.points %></td>
<td><%= check_box_tag 'finished', '1', task.finished %></td>
</tr>
<% end %>
Все это отлично работает и показывает, завершено ли действие, но мне трудно понять, как обновить базу данных с помощью флажка. Хотя я хотел бы, чтобы она обновлялась при нажатии на флажок, я согласен с тем, что у меня есть кнопка сохранения, чтобы сохранить их все сразу. Что когда-либо было бы проще, вероятно, было бы лучше для меня, поскольку я только изучаю rails.
Спасибо за любую помощь.
Редактировать:
Чтобы прояснить мой вопрос, мой приведенный выше код работает для правильного отображения данных, чего я не могу понять, так это как превратить его в форму, чтобы я мог сохранить любые изменения в значениях флажка.
Ответ №1:
Самым простым решением было бы использовать форму и кнопку сохранения. Если вы посмотрите на руководство по рельсам Form Helpers, вы можете увидеть пример:
<%= check_box_tag(:pet_dog) %>
<%= label_tag(:pet_dog, "I own a dog") %>
Вы, вероятно, хотите использовать form_for, а не form_tag, хотя для обновления вашего объекта. Смотрите Документацию здесь.
<%= form_for task do |f| %>
<%= f.label :finished %>:
<%= f.check_box :finished %><br />
<%= f.submit %>
<% end %>
Редактировать:
Чтобы обновить кратные, попробуйте что-то вроде этого:
<% form_tag edit_multiple_products_path do %>
<table>
<tbody>
<% @user.completeds.each do |task| %>
<tr>
<td><%= task.activity.name %></td>
<td><%= task.activity.type.name %></td>
<td><%= task.activity.points %></td>
<td><%= check_box_tag 'finished', '1', task.finished %></td>
</tr>
<% end %>
</tbody>
</table>
<%= submit_tag "Update Tasks" %>
<% end %>
Кроме того, не забудьте сделать все остальное, что упоминается в RailsCast.
Комментарии:
1. Любой способ сделать это с помощью одной кнопки сохранения / отправки?
2. Да! Посмотрите этот пример RailsCast: railscasts.com/episodes/165-edit-multiple
3. В принципе, вам все еще нужна форма, как в моем примере, но вам нужен уникальный путь для обновления кратных.
4. Хорошо, я думаю, это приближает меня, но, думаю, я был не очень ясен. Я просто пытаюсь обновить значение «готово» в базе данных до 1 или 0 в зависимости от того, что проверено. Я не пытаюсь обновить все остальные столбцы.
5. Опубликованный мной пример кода обновит только один столбец.