2011-06-24 58 views
5

我使用polimorphic_path和它的一些越野車。這個方法需要一些未定義的路由幫助器。我可以如何定義(像常規方法)自己的路由幫助器將用於像「model_name_path,model_name_url等」?如何在rails 3中定義自己的路由助手?

回答

2

我知道_path的一個可能的答案,但是對於_url我也不適合。任何人都知道爲什麼?

# at the bottom of config/routes.rb 
module ActionView::Helpers::UrlHelper 
    def model_name_path model, args={} 
     # your implementation 
    end 
end 
+0

哦,我認爲它也適用於_url,只是我從控制器調用_url而不是視圖。 – Ben

+0

假設我有一個名爲user_links的助手方法名稱,我應該在哪裏指定方法名稱,例如,根據您的例如。我有一個Post模型。我的代碼看起來像這樣: - 〜模塊ActionView :: Helpers :: UrlHelper def post_name_path post,args = {} #您的實現 - >究竟應該具備哪些功能? 結束 結束〜 – boddhisattva

+0

對不起,我嘗試使用適當的代碼塊,但不知何故無法正確地在評論部分。 Rails 4中的 – boddhisattva

4

此解決方案適用於我。

將此代碼添加到config/routes.rb文件的末尾。確保用您的應用程序名稱替換MyApp

MyApp::Application.routes.named_routes.module.module_eval do 
    def model_name_path(*args) 
    # Your code here 
    end 

    def model_name_url(*args) 
    # Your code here 
    end 
end 

MyApp::Application.routes.named_routes.instance_eval do 
    @helpers += [:model_name_path, :model_name_url] 
end 

這些自定義方法將在控制器,視圖和測試中可用。

+1

:Rails.application.routes.named_routes.url_helpers_module.module_eval do ... – luckyjazzbo