2009-08-06 4 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メソッドのparamとして会社の値を追加する必要があります。私はそれを自動化することが可能だと信じています。

答えて

2

アプリケーションコントローラのdefault_url_optionsを上書きする必要があります。

class ApplicationController > ActionController::Base 

    # ... 

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

end 
+0

は、私はあなたが完全な例外のバックトレースと、あなたがそれを実装する方法の例を投稿していない限り、あなたがサポートして提供することはできません –

+0

各_pathメソッドの引数の誤り、間違った数(1 0)を取得します。また、current_company.idは、完全性のために使用した例です。必要に応じてコードを修正する必要があります。 –

+1

default_url_options(options)をdefault_url_options(options = {})に変更して、引数の数を修正しました。しかし、議論については別の問題があります。 * _path(:id => @object)を指定する必要があります。なぜなら、常に最初の引数がcompanyオブジェクトであると考えているからです。 ここで説明します: https://rails.lighthouseapp.com/projects/8994/tickets/1251-default_url_options-cant-be-used-with-named-routes ありがとう! –

関連する問題