Rails поможет удалить несколько - PullRequest
0 голосов
/ 02 апреля 2011

У меня проблемы с удалением нескольких 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>

МойКонтроллер admin / 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"}

Мои маршруты.rb

Пространство имен: admin do ресурсы: konkurrancers do collection do delete: delete_multiple endконец конец

1 Ответ

1 голос
/ 02 апреля 2011

Ошибка в том, что искомый путь не определен в вашем файле маршрутов.

Я не думаю, что синтаксис поддерживается в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...