2011-08-14 6 views
0

本質的に、私はこれらのようなURLを持つことができるようにしたいと思います。Rails 3のリソースのために生成されたルートを変更する方法

/articles 
/articles/show/(article id) 
/articles/new 
/articles/edit/(article id) 

...など。私はresources:articlesルートを使いたいが、これは異なるルートを生成する。実際に

/articles 
/articles/(article id)/show 
/articles/new 
/articles/(article id)/edit/ 

、これは私がすくいルート

articles  GET /articles(.:format)   {:action=>"index", :controller=>"articles"} 
articles  POST /articles(.:format)   {:action=>"create", :controller=>"articles"} 
new_article GET /articles/new(.:format)  {:action=>"new", :controller=>"articles"} 
edit_article GET /articles/:id/edit(.:format) {:action=>"edit", :controller=>"articles"} 
article  GET /articles/:id(.:format)  {:action=>"show", :controller=>"articles"} 
article  PUT /articles/:id(.:format)  {:action=>"update", :controller=>"articles"} 
article  DELETE /articles/:id(.:format)  {:action=>"destroy", :controller=>"articles"} 

を実行したときに、私は私が望む動作を取得するために、これを使用しないようにしようとしています得るものです。

match ':controller(/:action(/:id(.:format)))' 

これはアプリが上記の経路に対応しているためです。目的の動作を得るためにルートを変更する簡単な方法はありますか?そしてもしそうなら、どのように?それ以外の場合は、アプリケーションが目的のURL構造にのみ応答するように、どうすればよいですか?

+0

今は 'resources:articles'しか持っていませんが、コントローラー用のジェネレーターがこのタイプの' get articles/index "を追加しました。これは私がコメントしたものです。 –

答えて

3

ちょうどあなたがのためにそれを設定する必要があり、特定のコントローラメソッドの一致ルーティング設定:あなたは変更する必要はありません

match 'articles/show/:id' => 'articles#show', :via => :get, :as => 'article' 
#etc etc ... 

そしてもののためにリソースを含める

resources :articles, :only => [:index, :new]