Rails有助于删除多个

时间:2011-04-02 12:05:24

标签: ruby-on-rails ruby-on-rails-3

我无法使用复选框删除多个konkurrancers。 我在提交表单时看到了这个错误:

  Routing Error

No route matches "/admin/konkurrancers/delete_multiple"

我的index.erb.html:

<h1>Alle konkurrencer</h1>
<div id="konkurrancer"><%= render 'konkurrencer', :remote => true %></div>
<%= link_to 'Opret konkurrence', new_admin_konkurrancer_path, :class => 'link' %>
<%= link_to 'Tilbage', :admin, :class => 'admina' %>

我的_konkurrencer部分:

  <% form_tag delete_multiple_admin_konkurrancers_path do %>
<div id="tabel">
<table id="tabel1" border="0" bordercolor="#000000" style="background-color:#FFFFFF" width="950" cellpadding="0" cellspacing="0">
    <tr id="toptr">
    <td>&nbsp;</td>
      <td ><%= sortable "name", "Navn" %></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
   </tr>
<% for konkurrancer in @konkurrancers %>
   <tr class="thumbnail-item" onmouseout="this.style.background='white';" onmouseover="this.style.background='#99ff33';this.style.cursor='pointer'">
    <td><%= check_box_tag "konkurrancer_ids[]", konkurrancer.id %></td>
    <td>&nbsp;</td>
    <td><%= link_to 'Vis', admin_konkurrancer_path(konkurrancer.id) %></td>
    <td><%= link_to 'Redigere', {:action => 'edit', :id => konkurrancer.id}, :class => 'action edit' %></td>
    <td><%= link_to 'Slet', admin_konkurrancer_path(konkurrancer.id), :confirm => 'Are you sure?', :method => :delete %></td>
   </tr>
 <% end %>
</table>
<div id="pagenavi">
<%= submit_tag "Delete Checked" %>  
<% end %>  
<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
</div>

我的管理员/ konkurrancers控制器:

def delete_multiple
    @konkurrancer = Konkurrancer.find(params[:konkurrancer_ids])
    @konkurrancer.each do |konkurrancer|
    konkurrancer.destroy
    end
end

我的路线:

delete_multiple_admin_konkurrancers DELETE /admin/konkurrancers/delete_multiple(
.:format) {:action=>"delete_multiple", :controller=>"admin/konkurrancers"}
                admin_konkurrancers GET    /admin/konkurrancers(.:format)
          {:action=>"index", :controller=>"admin/konkurrancers"}
                                    POST   /admin/konkurrancers(.:format)
          {:action=>"create", :controller=>"admin/konkurrancers"}
             new_admin_konkurrancer GET    /admin/konkurrancers/new(.:format)
          {:action=>"new", :controller=>"admin/konkurrancers"}
            edit_admin_konkurrancer GET    /admin/konkurrancers/:id/edit(.:forma
t)        {:action=>"edit", :controller=>"admin/konkurrancers"}
                 admin_konkurrancer GET    /admin/konkurrancers/:id(.:format)
          {:action=>"show", :controller=>"admin/konkurrancers"}
                                    PUT    /admin/konkurrancers/:id(.:format)
          {:action=>"update", :controller=>"admin/konkurrancers"}
                                    DELETE /admin/konkurrancers/:id(.:format)
          {:action=>"destroy", :controller=>"admin/konkurrancers"}

我的routes.rb

命名空间:admin do     资源:konkurrancers做       收集做         delete:delete_multiple       结束     结束   端

1 个答案:

答案 0 :(得分:1)

错误是因为路径文件中未正确定义您要查找的路径。

我认为rails3不支持这种语法,你似乎使用了rails3和rails2.x的混合。从应用的根目录运行rake routes,它会显示您拥有的所有路线。使用您的语法我没有提到delete_multiple路径。这应该有效:

  namespace :admin do
    resources :konkurrancers do
      collection do
        delete :delete_multiple
      end
    end
  end

现在,由于您使用的是标准form_tag,我相信默认方法是POST,您希望将其更改为DELETE以使路由正常工作。将表单标记更改为:

form_tag delete_multiple_admin_konkurrancers_path, :method => :delete