2011-08-14 76 views
0

本質上,我希望能夠擁有這些URL。如何在Rails 3中修改資源的生成路由

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

...等等。我想使用資源:文章路由,但這會生成不同的路由。

/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]