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
それほど良いですが、と*_url
の呼び出しを変更して、:current_brand
パラメータを含めるようにする必要があります(オプションであっても)。これは本当に醜い、IMOです。
私はパスヘルパーを自動的に@current_brand
でピックアップできるようにする方法はありますか?
おそらく、routes.rb
に範囲を定義するより良い方法はありますか?
おかげでこのハックを追加しました。これが私が解決した解決策です。私たちには、これをメーラーで設定する必要がある、rspec(自分の答えで貼り付けたもの)で動作させるためのハックなど、たくさんの問題もあります。 – u2622
ああ、はい、これを指摘してくれないのは残念です。あなたが完全性のためにそれを言いましたらうれしいです。 – CMW