如何在一个Ruby on Rails表单中编辑多个记录?

Gra*_*lip 9 forms checkbox ruby-on-rails multiple-records

我正在制作一个简单的待办事项列表应用程序来自学Ruby on Rails,但是我遇到了一个问题.我有一个简单的表单,列出待办事项,左侧有一个复选框,底部有一个"更新"按钮,如下所示:

[]做菜
[]取出垃圾
[]接管世界
(更新)

每个待办事项都是数据库中的单独记录,带有"已完成"的布尔字段.我希望表单将一个已检查项目ID的列表提交给一个动作,在该动作中我可以将每个项目的"已完成"字段设置为true,这将使它们从视图中隐藏.

我知道如何创建一个引用多个模型的表单,而不是引用同一模型的多个记录的表单.有小费吗?

谢谢!

Luk*_*uke 26

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 %>
Run Code Online (Sandbox Code Playgroud)