我做一个简单的待办事项列表应用自学Ruby on Rails的,但我碰到的一个问题。我有一个简单的表格,列出了一个复选框他们的左待办事项,并在底部的“更新”按钮,像这样:

[]做的菜,点击 []倒垃圾结果 []接管世界点击 (更新)

每个待办事项产品与“已完成”布尔型字段的数据库的单独记录。我希望表单提交检查一次性项目ID的列表中,我可以每个项目的“完成”字段设置为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阅读器这个问题的最新 railscast 从瑞安Bates和它似乎掩盖你问什么。

为什么不使用遥控功能,以更新数据库当一个项目被选中,并获得完全摆脱了更新按钮?

由于您可以包括每条记录的ID,当你创建你的表格,你会希望控制器通过迭代的项目在您发布,然后找到并相应地更新每个这样的记录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top