2009-08-06 46 views
3

我已將路由文件前綴值添加到每個map.resources行。所以,這一切看起來是這樣的:將默認值添加到我的* _path方法生成的路由的前綴中

map.resources :subjects, :path_prefix => ':company' 

我甚至還添加了這一行默認行爲

map.connect ':company/:controller/:action/:id' 

這是沒有必要的(我認爲),因爲所有的路由都與資源的方法進行處理。

我在ApplicationController的我的before_filter方法中獲取:company param。一切正常。但。

是否有可能改變所有* _path方法的行爲,默認情況下它會爲所有生成的url設置公司值,從url中取得一個?爲了使其工作完美,我將不得不將公司值添加爲每個_path方法的參數。我相信它可以自動完成。

回答

2

您應該在應用程序控制器中覆蓋default_url_options

class ApplicationController > ActionController::Base 

    # ... 

    def default_url_options(options) 
    { :company => current_company.id } 
    end 

end 
+0

我得到每個_path方法 – 2009-08-06 08:46:49

+0

我不能爲你提供支持,除非您發佈完整的例外回溯和如何實現它的一個示例錯誤錯誤的參數數目(0 1)。還要注意current_company.id僅僅是我爲了完整而使用的一個例子。您應該根據自己的需要調整代碼。 – 2009-08-06 09:06:51

+1

我通過將default_url_options(options)更改爲default_url_options(options = {})來修復了參數錯誤的數量。然而,關於爭論還有其他問題。現在我必須指定* _path(:id => @object),因爲它總是期望第一個參數是:公司對象。 這裏討論: https://rails.lighthouseapp.com/projects/8994/tickets/1251-default_url_options-cant-be-used-with-named-routes 謝謝! – 2009-08-06 09:10:48