0

我正在使用 Rails (3.2.5) 构建一个简单的待办事项列表。

我在一个无序列表中显示所有用户的待办事项,每个列表项都是待办事项本身。通过单击待办事项,用户将其标记为已完成。使用 jQuery 我给 li 一个 done 类,这样我就可以改变它的样式。通过单击“清除已完成”按钮,我希望销毁已完成的项目(并从数据库中删除)。

如何才能做到这一点?

注意:我基本上是在尝试使用 Rails 重新创建这个应用程序:http: //davidpdrsn.com/todos/

4

2 回答 2

0

假设调用了模型并且调用Todo了完成的列completed,您可以在控制器中编写其中之一:

Todo.destroy_all(:completed => true)
Todo.where(:completed => true).destroy_all

如果您需要有关如何管理 ajax 请求/响应的帮助,这里有一个好的开始(对不起,我不想给您解决方案,恕我直言,您应该自己解决)

资源:ActiveRecord#Base::destroy_all

于 2012-06-16T22:49:40.433 回答
0

你可以使用远程表单来做到这一点所以你会有类似的东西

您将有一个包含remote: true每个项目的表单,或者您可以只有一个表单并使用 JQuery 提交。

class TodoController
  def set_completed
    @todo = Todo.find(params[:id])
    @todo.done = true  # you could move this to your model and do something like @todo.done! and that would save it automatically
    @todo.save
  end

  def  destroy_completed 
    @todos_to_delete = Todo.where(done: true)# here you could also move it to your model and do it like Todo.completed
    @todos_to_delete.destroy_all
  end
end

并且您将使用 js 呈现响应以进行格式化,甚至删除列表中的项目,例如

意见/待办事项/set_completed.erb.js

$("#item_<%= @todo.id %>").addClass("completed");
于 2012-06-17T02:51:50.230 回答