在Rails中基于HTML类名销毁数据

在Rails中基于HTML类名销毁数据,html,ruby-on-rails,ruby,ruby-on-rails-3,Html,Ruby On Rails,Ruby,Ruby On Rails 3,我正在使用Rails(3.2.5)构建一个简单的待办事项列表 我在一个无序列表中显示所有用户的todo项,每个列表项都是todo本身。通过单击todo项目,用户将其标记为已完成。使用jQuery,我给li一个done类,这样我就可以更改它的样式。通过点击“清除已完成”按钮,我希望已完成的项目被销毁(并从数据库中删除) 如何做到这一点 注意:我基本上是在尝试使用Rails重新创建此应用程序:假设模型名为Todo,而完成的列名为completed,您可以在控制器中编写其中一个: Todo.destr

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

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

如何做到这一点


注意:我基本上是在尝试使用Rails重新创建此应用程序:

假设模型名为
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呈现响应以进行格式化,甚至删除列表中的项目,如

views/todo/set_completed.erb.js

$("#item_<%= @todo.id %>").addClass("completed");
$(“#项”).addClass(“已完成”);

那你为什么不看看他是怎么做的呢?我会做一个自定义的控制器动作,响应js,更新db,然后运行jquery来更新数据库view@sergio-tulentsev抱歉,但解决方案很简单,关于这个论点有很多参考资料(railstutorial、railsforzombies等);我认为,为了变得更好,他自己找到这个解决方案是很重要的