我正在使用 Rails (3.2.5) 构建一个简单的待办事项列表。
我在一个无序列表中显示所有用户的待办事项,每个列表项都是待办事项本身。通过单击待办事项,用户将其标记为已完成。使用 jQuery 我给 li 一个 done 类,这样我就可以改变它的样式。通过单击“清除已完成”按钮,我希望销毁已完成的项目(并从数据库中删除)。
如何才能做到这一点?
注意:我基本上是在尝试使用 Rails 重新创建这个应用程序:http: //davidpdrsn.com/todos/
我正在使用 Rails (3.2.5) 构建一个简单的待办事项列表。
我在一个无序列表中显示所有用户的待办事项,每个列表项都是待办事项本身。通过单击待办事项,用户将其标记为已完成。使用 jQuery 我给 li 一个 done 类,这样我就可以改变它的样式。通过单击“清除已完成”按钮,我希望销毁已完成的项目(并从数据库中删除)。
如何才能做到这一点?
注意:我基本上是在尝试使用 Rails 重新创建这个应用程序:http: //davidpdrsn.com/todos/
假设调用了模型并且调用Todo
了完成的列completed
,您可以在控制器中编写其中之一:
Todo.destroy_all(:completed => true)
Todo.where(:completed => true).destroy_all
如果您需要有关如何管理 ajax 请求/响应的帮助,这里有一个好的开始(对不起,我不想给您解决方案,恕我直言,您应该自己解决)
你可以使用远程表单来做到这一点所以你会有类似的东西
您将有一个包含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");