Rails路由像github

Jon*_*ono 5 ruby-on-rails rails-routing ruby-on-rails-3 ruby-on-rails-3.2

我正在使用Rails 3.2

我希望路由几乎和github一样,所以:

root/(username)
root/(username)/(projectname)
root/(username)/(projectname)/issus
Run Code Online (Sandbox Code Playgroud)

等等

我正在尝试这样的事情:

resources :publishers do
  resources :magazines do
    resources :photos
  end
end 
Run Code Online (Sandbox Code Playgroud)

但是这给出了这样的路线:

/publishers/1/magazines/2/photos/3
Run Code Online (Sandbox Code Playgroud)

我正在看的一个项目做了以下似乎有效,但似乎不适合我.

resources :projects, :constraints => { :id => /[^\/]+/ }, :except => [:new, :create, :index], :path => "/" do
member do
  get "team"
  get "wall"
  get "graph"
  get "files"
end

resources :wikis, :only => [:show, :edit, :destroy, :create] do
  member do
    get "history"        
  end
end
Run Code Online (Sandbox Code Playgroud)

Kyl*_*e C 4

如果你想摆脱 id 号(这是 Rails 默认的)并使用名称,我建议使用FriendlyId gem。

观看这个railscast http://railscasts.com/episodes/314-pretty-urls-with-friendid

这是 github 页面https://github.com/norman/Friendly_id

编辑

这是我一直在寻找的文章,我忘了几个月前我把它加入了书签。 http://jasoncodes.com/posts/rails-3-nested-resource-slugs