Ruby on rails 如何在rails中用一个表单删除/更新多个实例

Ruby on rails 如何在rails中用一个表单删除/更新多个实例,ruby-on-rails,submit,Ruby On Rails,Submit,我3天前刚开始用rails编程,同时也学习了ruby,从昨天开始,我一直很难想出如何使用一个表单,删除/更新我的一些实例,我只使用一个模型“任务”。代码如下: <%= form_for @task do |f| %> <ul> <% @tasks.each do |task| %> <li id="task"><%= f.check_box :done %> <%= f.label :name %

我3天前刚开始用rails编程,同时也学习了ruby,从昨天开始,我一直很难想出如何使用一个表单,删除/更新我的一些实例,我只使用一个模型“任务”。代码如下:

<%= form_for @task do |f| %> 
    <ul>
    <% @tasks.each do |task| %>
        <li id="task"><%= f.check_box :done %> <%= f.label :name %> </li>
    <% end %>
    <button onclick="doUpdate()">Mark Selected as done </button>
    <%= button_to "Delete selected", :method => :delete  %>
    </ul>
<% end %>
我的模型只有两个参数。name:String和done:Boolean,我不想删除所有选中的复选框。但这对我不起作用


提前感谢。

乍一看,尝试使用
任务。销毁
而不是
任务。删除
,并
完成
而不是
任务。完成
请参阅


问题是,你做错了(我会告诉你原因)。我可以粘贴代码使其工作,但我宁愿解释,因为您可能是为了学习

Task.find(:all,:conditions=>[“done=?”,true])
将返回数据库中的所有内容,其中done=true。您将删除数据库中标记为完成的所有内容,而不是表单上标记的内容
Task
是您的模型,您可以使用activerecord中的find、where和其他方法访问数据库(如果activerecord听起来不自然,activerecord允许您从数据库中获取内容,而无需编写SQL查询)

您在控制器中真正需要做的是: -您必须从表单中获取发送的内容(查看文档/web资源以了解
param[]
的用法)。 -对于每个标记为true的复选框,您都会删除一条记录。(你每个部分都做对了,这很好!)

我不认为您的观点是正确的,我建议您首先确保收到的数据是正确的(参数[]),然后继续尝试删除该记录,或者执行您想对其执行的任何操作

要“测试”控制器和模型中的变量和代码,请使用print@variable或其他工具(检查rails文档如何调试)

我建议你使用销毁,而不是像其他堆栈溢出者所说的那样删除。阅读销毁和删除的文档


继续:)

您看到的问题是什么?有什么例外吗?我用了你的代码,这次它返回了一个空白页。。。正如我所检查的,它没有路由到销毁路径,而是路由到创建“/任务”。所以我试着在create控件上做点什么,但是什么都没发生。。。如此混乱;汉克斯人!你救了我的命!我找不到正确的答案。我真的很惭愧把model和form=(。我知道你说的一切,我要检查params的用法并进行测试。
def delete
  @tasks = Task.find(:all, :conditions => ["task.done = ?", true])
  @tasks.each do |task|
    task.delete
  end

  @tasks = Task.all
end
def destroy
  @tasks = Task.find(:all, :conditions => ["done = ?", true])
  @tasks.each do |task|
    task.destroy
  end

  @tasks = Task.all
end