11

나는 NotificationsController을 가지고 있는데 여기에는 clear 액션 만 있습니다. 분명 내가 POST/알림을 수행하여이 작업에 액세스하고 싶습니다 레일 라우팅 : 맞춤 동작 만있는 리소스

/

그래서 나는 내 라우터에 쓴 :

resources :notifications, :only => [] do 
    collection do 
     post :clear 
    end 
    end 

이를 달성하기 위해 깨끗한 방법이 있나요? 나는 그것을 할 것

scope :notifications do 
    post :clear 
    end 

생각하지만 때문에는 missing controller 오류가 - 내 생각 - 그것은 clear 컨트롤러를 찾습니다.

감사

답변

15

당신이 범위를 사용하는 경우, 당신은 컨트롤러가 보이는 추가해야합니다 당신의 대답은 정확한 이유

namespace :notifications do 
    post 'clear' 
end 
+0

그리고 컬렉션 do와 멤버가 모두 필요하다면? 여전히'post/: id/edit'를 수동으로 정의 할 필요가 있습니까? –

+0

귀하의 경우 범위 또는 네임 스페이스를 사용하십시오. yes ('get : edit, : path => '/ : id/edit''). 수동으로 필요하지 않으면 귀하의 질문에 쓴 사용할 수 있습니다. http://stackoverflow.com/q/17465335/1297435 –

+3

네, 가장 명확하고 덜 해킹 된 해결책 인 것처럼 느껴집니다. 감사 –

1
post "notifications/clear" => "notifications#clear" 
+1

는 설명 고려하시기 바랍니다

scope :notifications, :controller => 'notifications' do post 'clear' end 

또는 사용 네임 스페이스와 같은 , 그리고 그것이하는 것을 의미하는 것. – DonBoitnott

+0

모든 알림 동작을 그룹화하고 리소스와 마찬가지로 '메소드 : 동작'을 포함하지만 사용하지 않는 기본 동작이 필요하지 않습니다. –