2014-10-04 2 views
1
이 같은 조치를 추가 할

:

def destroy_all 
    Task.destroy_all 
    end 

를 내가보기에이 방법에 대한 링크를 시도하십시오

<%= link_to "delete all", controller: 'tasks', action: 'destroy_all' %> 

그리고 내 경로에 추가 .rb : 내 root_path에 갈 때

resources :tasks 

을하지만 수 :

No route matches {:action=>"destroy_all", :controller=>"tasks"} 

하지만 줄 리소스가 있습니다. 작업 : 그래서 나는 무엇이 잘못되었는지 모릅니다. 난 그냥 내 destroy_all 작업을 가능한 간단하게하고 루트 경로로 돌아 가기를 원합니다.

답변

2

resources :tasks은 'destroy_all'에 대한 경로를 제공하지 않습니다. 당신은 resources :tasks 몇 가지 새로운 경로 생성 것을 볼 수 있습니다

$ rake routes 

: 당신은 레이크를 사용하여 사용 가능한 경로를 모두 볼 수 있습니다 당신은 delete_all에 대한 경로를 추가하려면

   tasks GET /tasks(.:format)    tasks#index 
        POST /tasks(.:format)    tasks#create 
      new_task GET /tasks/new(.:format)   tasks#new 
      edit_task GET /tasks/:id/edit(.:format)  tasks#edit 
       task GET /tasks/:id(.:format)   tasks#show 
        PATCH /tasks/:id(.:format)   tasks#update 
        PUT /tasks/:id(.:format)   tasks#update 
        DELETE /tasks/:id(.:format)   tasks#destroy 

것은 다음 변경할 수있는 당신의 자원에 :

,691 : 다시

resources :tasks do 
    collection do 
    delete :delete_all 
    end 
end 

, 새 경로를 확인하기 위해 레이크를 사용할 수 있습니다

delete_all_tasks DELETE /tasks/delete_all(.:format) tasks#delete_all 
+0

완벽한. 감사. 하지만 이제는 메시지에 문제가 있습니다. _ '모두 삭제'를 클릭 한 후 '쇼'작업을 TasksController_에 대해 찾을 수 없습니다. 'destroy_all' 액션에서'render 'index'를 사용했고'render nothing : true'를 시도했습니다. 나는 특별한 것을 렌더링하고 싶지 않고 루트 경로 만 렌더링합니다. – Jensky

+0

도움이 된 것을 기쁘게합니다. 새로운 문제처럼 들리 겠지만 사람들이 컨트롤러 동작 코드를 볼 수 있도록 새로운 SO 질문을 만드는 것이 좋습니다. 나는 새로운 질문을 게시 할 때 대답하려고 노력할 것입니다 :) –

+0

당신 말이 맞습니다. 다시 감사합니다 :) – Jensky

관련 문제