2013-03-27 3 views
1

views/questions/show.html.erb에 링크가있어 사용자가 태그를 삭제할 수 있습니다.링크가 잘못된 컨트롤러로 GET (오히려 오히려) 요청을 만듭니다.

<%=link_to "x", 
:remote => true, 
:url => remove_question_tag_path(@question, tag), 
:method => :delete, 
:html => { :id => "delete-#{tag.name.parameterize}"} %> 

<% end %> 

remove_question_tag_path 경로는 questions 리소스 내에 tags 리소스를 중첩하여 만들어집니다.

resources :questions do 
    resources :answers do 
     member { post :vote } 
     end 
     resources :tags do 
      member do 
      delete :remove 
      end 
     end 
    end 

레이크 노선들은 내가 링크를 클릭하면,

remove_question_tag DELETE /questions/:question_id/tags/:id/remove(.:format)    tags#remove 

그러나 URL에 사용하려고으로이 경로는, 그것은의 show 액션에 GET 요청을 만들고있다 존재 함을 보여줍니다 레이크 라우트가 경로의 대상임을 나타내므로 태그 컨트롤러의 제거 동작 대신 질문 컨트롤러를 사용하십시오.

Started GET "https://stackoverflow.com/questions/25?html%5Bid%5D=delete-outdoors&method=delete&url=%2Fquestions%2F25%2Ftags%2F2%2Fremove" for 127.0.0.1 at 2013-03-26 19:01:00 -0700 

내가 잘못했을 수도있는 것을 설명해 주시겠습니까?

답변

1

이 시도 :

<%= link_to "x", remove_question_tag_path(@question, tag), :remote => true, :method => :delete, :html => { :id => "delete-#{tag.name.parameterize}"} %> 

설명 : 당신이 링크에 대한 URL을 지정하지 그래서 link_to"x" 제외한 모든 지정된 인수의 해시를 만들고 URL 옵션로 간주합니다. 따라서 :method 옵션은 DELETE 요청을 생성하는 대신 GET 매개 변수에 방금 추가됩니다.

관련 문제