5

Tôi đang sử dụng Rails 3.2Rails định tuyến như github

Tôi muốn đã định tuyến khá nhiều giống hệt như github, vì vậy:

root/(username) 
root/(username)/(projectname) 
root/(username)/(projectname)/issus 

, vv

tôi đang cố gắng một cái gì đó như thế này:

resources :publishers do 
    resources :magazines do 
    resources :photos 
    end 
end 

Nhưng cung cấp các tuyến đường như sau:

/publishers/1/magazines/2/photos/3 

Dự án tôi đang xem xét những điều sau đây có vẻ như hoạt động nhưng dường như không dành cho tôi.

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 

Trả lời

4

Nếu bạn muốn loại bỏ số id (là đường ray mặc định) và sử dụng tên tôi đề xuất đá quý FriendlyId.

hồ railscast này http://railscasts.com/episodes/314-pretty-urls-with-friendlyid

và đây là trang github https://github.com/norman/friendly_id

EDIT

Đây là bài tôi đang tìm kiếm, tôi quên Tôi đánh dấu nó vài tháng trước đây. http://jasoncodes.com/posts/rails-3-nested-resource-slugs

+0

vẻ thú vị. Tôi sẽ phải kiểm tra railscast. Tôi tự hỏi làm thế nào nó được lưu trữ trong nội bộ, và nếu sử dụng một vấn đề cơ sở dữ liệu khác nhau. – Ron

+1

Điều này thật tuyệt. Không chính xác những gì tôi muốn nhưng sẽ hữu ích. Những gì tôi đang tìm kiếm nhiều hơn là làm thế nào github hoạt động. Vì vậy, bạn không cần một url như/người dùng/Jonovono nhưng thay vì chỉ/Jonovono hoạt động. – Jonovono

+1

http://stackoverflow.com/questions/2968722/github-url-style –

0

Bạn phải sử dụng friendly_id và phạm vi

scope '/:username/:projectname', module: 'users/projects', as: 'users_project' do 
    resources :issus 
    resources :photos 
end 
Các vấn đề liên quan