11

私はNotificationsControllerを持っていますが、私はアクションがclearしかありません。私は明確なRailsルーティング:カスタムアクションのみのリソース

/POST /通知を行うことにより、このアクションにアクセスしたい

は、だから私は、私のルータでこれを書いた:

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

は、これを達成するためのクリーンな方法はありますか?私は

scope :notifications do 
    post :clear 
    end 

がそれを行うだろうと思ったが、ので、私は、missing controllerエラーを持っている - それはclearコントローラを探します - 私は思います。

おかげ

答えて

15

スコープを使用している場合は、コントローラを追加する必要があり

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

それとも、名前空間

namespace :notifications do 
    post 'clear' 
end 
+0

そして、コレクションdoとメンバーの両方が必要な場合はどうすればいいですか?私は 'post '/:id/edit'を手動で定義する必要がありますか? –

+0

あなたの場合、スコープまたは名前空間を使用してください( 'get:edit、:path => '/:id/edit'')。手動で必要がない場合は、あなたの質問に書いたものを使うことができます。ここをクリックしてくださいhttp://stackoverflow.com/q/17465335/1297435 –

+3

ええ、私は ':only => []'が最も明白で、よりハックリーな解決策であるように感じます。ありがとう –

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

を使用するようになりますあなたの答えが正しい理由を説明ご検討ください、そしてそれが何を意味するのか。 – DonBoitnott

+0

すべての通知アクションをグループ化し、その中にリソースのように「メソッド:アクション」を持たせたいが、私が使用しないデフォルトのアクションは必要ありません。 –

関連する問題