我无法使用复选框删除多个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> </td>
<td ><%= sortable "name", "Navn" %></td>
<td> </td>
<td> </td>
<td> </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> </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 结束 结束 端
答案 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