有什麼方法可以爲url /路徑助手提供默認值嗎?Rails路由:爲路徑助手提供默認值
我有一個可選的範圍纏繞我所有的路線:
#config/routes.rb
Foo::Application.routes.draw do
scope "(:current_brand)", :constraints => { :current_brand => /(foo)|(bar)/ } do
# ... all other routes go here
end
end
我希望用戶能夠使用這些URL來訪問網站:
/foo/some-place
/bar/some-place
/some-place
爲了方便起見,我在我ApplicationController
設立@current_brand
:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_filter :set_brand
def set_brand
if params.has_key?(:current_brand)
@current_brand = Brand.find_by_slug(params[:current_brand])
else
@current_brand = Brand.find_by_slug('blah')
end
end
end
所以非常好,但現在我必須修改所有*_path
和*_url
調用以包含:current_brand
參數,即使它是可選的。 IMO真的很醜。
有什麼方法可以讓路徑助手自動拾取@current_brand
?
或者更好的方法來定義範圍routes.rb
?
由於加入這個技巧。這是我最終選擇的解決方案。我們還有很多問題,例如需要在郵件程序中設置它,以及使用rspec工作的黑客(粘貼在我自己的答案中) – u2622 2012-04-07 19:04:58
哦,是的,我很抱歉沒有指出這一點。很高興你提到它的完整性。 – CMW 2012-04-08 18:35:08