2012-02-10 15 views
0

私は自分のアプリをレール3にアップグレードしていますが、いくつかのルートについて少し混乱しています。手ごろなものは簡単ですが、特定のコントローラー内のすべてのアクションに対して汎用ルールを設定するにはどうすればよいですか。私はこのようなものを試した:rails3 routesについての質問

get 'custom/:action/' => {:controller => :custom} 

しかし、それは動作しませんでした。新しいフォーマットは "controller#action"だと思われますが、どのようにアクションを可変に指定できますか?

また、名前付きのルートやリソースを使用する以外に、特定のコントローラ内のルートに名前を付けるために簡略表記を使用できますか?

すなわちいうより:

get '/tasks', :controller => :home, :action => :tasks, :as => 'tasks_home' 
get '/accounts', :controller => :home, :action => :accounts, :as => 'accounts_home' 

それはのような何か少しクリーナー、行うことが可能です:

controller => :home do 
    get :tasks 
    get :accounts 
end 

をそして、それが自動的に名前のルートを作成したのでしょうか?

+0

それはリソースの場合は、あなたが 'リソースの操作を行うことができますポストは メンバーは「ダミー」を取得 行うのですか、 :as => 'dummy_home' get 'dummy1'、:as => 'dummy1_home' end end ' –

答えて

0

あなたはこのような変数としてアクションを使用することができます。

resource :custom do 
    match ':action' 
end 

これは

    /custom/:action(.:format) customs#:action 
    custom POST /custom(.:format)   customs#create 
new_custom GET /custom/new(.:format)  customs#new 
edit_custom GET /custom/edit(.:format) customs#edit 
      GET /custom(.:format)   customs#show 
      PUT /custom(.:format)   customs#update 
      DELETE /custom(.:format)   customs#destroy 

だから、変数URL-Sなど、あなたのアクションを処理すると、いくつかのデフォルトのCRUDアクションが追加されますが生成されます。同じように。

ここでコントローラ名は複数であることに注意してください。名前が単数形のコントローラのルートを使用する場合は、resourceの代わりにresourcesを使用してください。

2番目の質問に対する答えが最初のものとほぼ同一であり、使用資源:

resource :home do 
    get :tasks 
    get :accounts 
end 

が生成:

tasks_home GET /home/tasks(.:format)  homes#tasks 
accounts_home GET /home/accounts(.:format) homes#accounts 
     home POST /home(.:format)   homes#create 
    new_home GET /home/new(.:format)  homes#new 
    edit_home GET /home/edit(.:format)  homes#edit 
       GET /home(.:format)   homes#show 
       PUT /home(.:format)   homes#update 
       DELETE /home(.:format)   homes#destroy 

注一致コントローラ名が複数であることを再度、ためのコンベンション。

+1

ありがとう...これは実際に私がrails2でやっていた方法ですが、ハックのような感じです私は何も手伝っていません。基本的に、私はこれらのコントローラにエンドポイントを持たない穏やかなルートを無効にするために、次のようなものを追加しています: resource:home、:except => [:new、:、edit、:destroy] do ...終わり – gmoniey