2013-06-01 38 views
0

在我们的Rails应用程序中,我有几个webhook,由外部服务(即PayPal IPN,Mailgun和Pusher)调用。目前,每个类型都有它自己的控制器+必要的途径,例如:组织这段代码的惯用方式是“rails方式”

post 'jobs/:job_id/comments/reply' => 'mailgun#incoming_email_comment' 
post '/webhook' => 'pusher#webhook' 
post '/paypal/ipn', :to => 'paypal#ipn', :as => :paypal_ipn 

是否有一个更清洁,更“轨道的方式”来实现这一目标?

回答

0

例如post '/webhook' => 'pusher#webhook'

pushers_controller.rb

class Pushers <ApplicationController 
    def webhook 
    .... 
    end 
end 

的routes.rb

resources :pushers do 
    collection do 
    post 'webhook' 
    end 
end 

现在你可以得到的URL像这样

webhook_pushers_path 

这条路线或者

link_to 'some text', webhook_pushers_path 

正如你所看到的,现在你不需要手工编写url。 Rails使用您的控制器的名称和您的操作自动创建它。 您可以在那里阅读更多http://guides.rubyonrails.org/routing.html#adding-more-restful-actions