Как мне отредактировать несколько записей в одной форме Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/963343

Вопрос

Я создаю простое приложение со списком дел, чтобы самостоятельно освоить Ruby on Rails, однако столкнулся с проблемой.У меня есть простая форма, в которой перечислены элементы to-do с флажком слева от них и кнопкой "Обновить" внизу, вот так:

[ ] Помыть посуду
[ ] Вынести мусор
[ ] Захватите власть над миром
( Обновление )

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

Я знаю, как создать форму, которая ссылается на несколько моделей, но не ту, которая ссылается на несколько записей одной и той же модели.Есть какие-нибудь советы?

Спасибо!

Это было полезно?

Решение

Railscasts - ваш друг!

http://railscasts.com/episodes/52-update-through-checkboxes

Это действительно просто:

# routes.rb
map.resources :tasks, :collection => { :complete => :put }

# tasks_controller.rb
def complete
  Task.update_all(["completed_at=?", Time.now], :id => params[:task_ids])
end

# views\tasks\complete.html.erb
<% form_tag complete_tasks_path, :method => :put do %>
  <ul>
  <% for task in @incomplete_tasks %>
    <li>
      <%= check_box_tag "task_ids[]", task.id %>
      <%= task.name %>
    </li>
  <% end %>
  </ul>
  <%= submit_tag "Mark as Complete" %>
<% end %>

Другие советы

Вау.Это определенный выбор времени.Элемент прямо перед этим вопросом в моем RSS-ридере является последним рельсовая трансляция от Райана Бейтса, и, похоже, это в точности то, о чем вы просите.

Почему бы не использовать удаленную функцию для обновления базы данных при проверке элемента и вообще не избавиться от кнопки обновить?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top