2011-03-05 6 views
0

문제가 있습니다. 카테고리를 삭제할 수 없습니다.레일이 객체를 삭제할 수 없습니다.

레이크 경로 :

 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"} 

내 kategori 인덱스보기 :

<% @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 %> 

내 kategori 컨트롤러 :

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을 누르면3210

나는 (삭제) 오류를 다음 얻을 :

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

레일스 콘솔에서 무엇을 볼 수 있습니까? –

+0

콘솔을 게시했습니다 –

답변

3

Rails의 RESTful 동작을 사용할 때 destroy 메서드는 GET 요청 (사용자가 지정하지 않으면 기본값)으로가 아니라 DELETE 요청 (사용자의 rake routes 출력 시작 부분에 "DELETE"가 표시됨)에 의해 호출됩니다. 그렇지 않으면). 그래서, 당신은 당신의 연결이를 지정해야합니다

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

이이 단순화 될 수있다 : admin_kategori 이후

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

올바른 URL로 연결 명명 된 경로이며, DELETE 방법을 사용하여 것이다 destroy 동작을 자동으로 호출합니다.

[업데이트]

그것은 당신이 당신의 UJS이 제대로 설정하지 않아도 수도 있습니다.

  1. rails.js 스크립트 태그 (및 설정에 따라 프로토 타입이나 jQuery를 같은가에 따라 달라질 수있는 라이브러리) 레이아웃에 포함되어 있는지 확인하고
  2. 는 당신이 출력하고합니다 당신은 필요 csrf_meta_tag을 레이아웃의 머리 부분에 넣으십시오. 당신이하지 않은 경우는
+0

작동하지 않았습니다. 나는 내 길을 게시했다. –

+0

로그에 DELETE 요청 대신 GET을 보내는 중임이 표시됩니다. 새 링크 코드로 질문을 업데이트 할 수 있습니까? –

+0

이제 내 링크 코드를 업데이트했습니다 –

관련 문제