2011-03-05 65 views
0

我遇到問題。我無法刪除類別。Rails幫助無法刪除對象

耙路線:

 admin_kategoris GET /admin/kategoris(.:format)    {:action= 
>"index", :controller=>"admin/kategoris"} 
         POST /admin/kategoris(.:format)    {:action= 
>"create", :controller=>"admin/kategoris"} 
    new_admin_kategori GET /admin/kategoris/new(.:format)   {:action= 
>"new", :controller=>"admin/kategoris"} 
    edit_admin_kategori GET /admin/kategoris/:id/edit(.:format)  {:action= 
>"edit", :controller=>"admin/kategoris"} 
     admin_kategori GET /admin/kategoris/:id(.:format)   {:action= 
>"show", :controller=>"admin/kategoris"} 
         PUT /admin/kategoris/:id(.:format)   {:action= 
>"update", :controller=>"admin/kategoris"} 
         DELETE /admin/kategoris/:id(.:format)   {:action= 
>"destroy", :controller=>"admin/kategoris"} 

我的索引駕駛員學校視圖:

<% @kategoris.each do |kategori| %> 
    <tr> 
    <td><%= kategori.name %></td> 
    <td><%= link_to 'show', {:action => 'show', :id => kategori.id}, :class => 'action show' %></td> 
    <td><%= link_to 'edit', {:action => 'edit', :id => kategori.id}, :class => 'action edit' %></td> 
    <td><td><%= link_to 'slet', {:action => 'destroy', :id => kategori.id, :method => :delete}, :class => 'action destroy' %></td></td> 
    </tr> 
<% end %> 

我的控制器駕駛員學校:

def destroy 
    @kategori = Kategori.find(params[:id]) 
    @kategori.destroy 

    respond_to do |format| 
     format.html { redirect_to(kategoris_url) } 
     format.xml { head :ok } 
    end 
    end 

我的routes.rb:

namespace :admin do 
resources :kategoris 
end 

我得到以下錯誤,當我按下slet(刪除):

Started GET "/admin/kategoris/1?method=destroy" for 127.0.0.1 at 2011-03-05 20:0 
8:57 +0100 
    Processing by Admin::KategorisController#show as HTML 
    Parameters: {"method"=>"destroy", "id"=>"1"} 
    ←[1m←[36mKategori Load (1.0ms)←[0m ←[1mSELECT `kategoris`.* FROM `kategoris` 
WHERE (`kategoris`.`cached_slug` = '1') LIMIT 1←[0m 
    ←[1m←[35mSQL (1.0ms)←[0m SELECT sluggable_id FROM slugs WHERE ((slugs.sluggab 
le_type = 'Kategori' AND slugs.name = '1' AND slugs.sequence = 1)) 
    ←[1m←[36mKategori Load (0.0ms)←[0m ←[1mSELECT `kategoris`.* FROM `kategoris` 
WHERE (`kategoris`.`id` = 1) LIMIT 1←[0m 
Rendered admin/kategoris/show.html.erb within layouts/application (5.0ms) 
Completed in 166ms 

ActionView::Template::Error (No route matches {:action=>"edit", :controller=>"ka 
tegoris", :id=>#<Kategori id: 1, name: "Elektronik", created_at: "2011-02-17 04: 
18:11", updated_at: "2011-02-17 04:18:11", cached_slug: "">}): 
    6: </p> 
    7: 
    8: 
    9: <%= link_to 'Edit', edit_kategori_path(@kategori) %> | 
    10: <%= link_to 'Back', admin_kategoris_path %> 
    app/views/admin/kategoris/show.html.erb:9:in `_app_views_admin_kategoris_show_ 
html_erb__679400070_47327076__118033797' 
    app/controllers/admin/kategoris_controller.rb:18:in `show' 

Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc 
h/middleware/templates/rescues/_trace.erb (1.0ms) 
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc 
h/middleware/templates/rescues/_request_and_response.erb (4.0ms) 
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc 
h/middleware/templates/rescues/template_error.erb within rescues/layout (57.0ms) 

我的編輯鏈接的作品。

+0

您在Rails控制檯中看到了什麼? – 2011-03-05 18:27:29

+0

我已經發布控制檯 – 2011-03-05 18:54:03

回答

3

當使用Rails的RESTful操作時,destroy方法由DELETE請求(如rake routes輸出開始處的「DELETE」所指示)調用,而不是由GET請求調用(除非您指定了GET請求除此以外)。所以,你需要在你的鏈接到指定此:

<td><%= link_to 'slet', {:action => 'destroy', :id => kategori.id}, :method => :delete, :class => 'action destroy' %></td> 

這可以簡化爲:

<td><%= link_to 'slet', admin_kategori_path(kategori), :method => :delete, :class => 'action destroy' %></td> 

因爲admin_kategori是導致正確的URL命名的路由,並使用DELETE方法自動調用destroy動作(因爲這就是路線說的)。

[更新]

這也有可能是你沒有你的UJS正確設置你。您需要:

  1. 確保rails.js腳本標記(並根據您的設置可能依賴於任何庫,如原型或jQuery的)包含在你的佈局,並
  2. 確保你輸出csrf_meta_tag在佈局的頭部。如果你不是,它不會工作
+0

它沒有工作。我發佈了我的路線。 – 2011-03-05 18:53:44

+0

日誌顯示您仍在發送GET而不是DELETE請求。你能用新的鏈接代碼更新問題嗎? – 2011-03-05 18:58:28

+0

我現在已經更新了我的鏈接代碼 – 2011-03-05 19:02:02