2012-02-16 5 views
0

유효한 경로가있는 개체를 파괴 할 수 없습니다. 브라우저는 No route matches [POST] "/blog/topics/3/posts/1"을 반환합니다. 그러나 동일한 리소스에서 다른 모든 작업을 수행 할 수 있습니다. 콘솔에서 객체를 만들고 파괴 할 수있는 방법을 내 컨트롤러, 템플릿에서 어떻게 볼 수 있습니까?경로는 있지만 개체를 ​​삭제할 수는 없지만 그 이유는 무엇입니까?

저장 시간이-이 노선 내 현재의 설정에 따라 중 하나가 작동하지 않습니다

여기 내 컨트롤러 :

<%= link_to 'Destroy', blog_topic_post_path(@topic, @post), method: :destroy, confirm: 'You Sure About This?' %> 

답변

0

그것은 method: :delete을해야한다 : 여기

class Blog::PostsController < ApplicationController 
    before_filter :fetch_topic, except: [:index] 
    before_filter :fetch_post, except: [:create, :new] 

    #stuff that works. 
    .. 
    .. 
    .. 

    def destroy 
    @post.destroy 
    respond_to do |format| 
    format.html { redirect_to blog_topic_posts_url, notice: 'Post deleted.'} 
    end 
     #DOES NOT work: redirect_to root_url([:blog, @topic, @post]), notice: 'Post deleted.' 
    end 

    private 
    def fetch_post 
    @post = @topic.posts.find(params[:id]) 
    end 

    def fetch_topic 
    @topic = Topic.find(params[:topic_id]) 
    end 

내 템플릿입니다.

+0

나는 내 동사의 행동이 혼란스럽고 게으름이 많다. – rhodee

3

귀하의 link_to가 잘못되었을 수 있습니다. RoR API에서 link_to 옵션은 :method => :delete, :confirm => "Are you sure?"과 같아야합니다. :fetch_topic이 중 하나라는되지 않기 때문에 당신이 그 문제에 대한 @post 또는 @topic이되지 않도록

또한, 당신의 :fetch_post 필터는, 액션 destroy 실행되지 않습니다.

+0

'만들기'는'POST '이고,'업데이트'는'PUT'이고,'파기'는'DELETE'입니다. REST 의미와 레일 의미가 다릅니다. – tadman

+0

@MrDanA 명시 적으로 언급 된 것을 제외한 모든 작업에서 내 필터를 실행하는'except' 필터를 사용하고 있습니다. @ tadman 심각하게. 게시물을 CRUD 할 수는 있지만 지금은 지금 조사 할 이상한 오류가 발생합니다. – rhodee

+0

이것은 많은 사람들을 혼란스럽게합니다. 링크는': method => : delete'이지만 컨트롤러 메소드는'destroy'입니다. 좋은 대답. –