2014-04-06 16 views
12

Tôi đã thay đổi định tuyến posts#index để khớp với blog và bây giờ tôi nhận được /blog trong URL mà tôi đang cố gắng hoàn thành.Cách thay đổi đường ray tên tuyến 4

Tôi đã thử một số cách khác nhau để nhận bài đăng trên blog thực tế của mình mà tuyến đường hiện trông giống như /posts/this-is-a-test cũng sử dụng blog thay vì posts trong URL.
Dưới đây là tuyến đường tệp hiện tại của tôi. Tôi đang sử dụng đá quý friendly_id, nếu điều đó tạo ra bất kỳ sự khác biệt nào khi trả lời câu hỏi này.

resources :posts do 
    resources :comments 
end 

    resources :contacts, only: [:new, :create] 

    root "pages#home" 

    get "/home", to: "pages#home", as: "home" 
    get "about" => 'pages#about' 
    get "pricing" => 'pages#pricing' 
    get "contact_us" => 'pages#contact_us' 
    match 'blog', to: 'posts#index', via: :all 
end 
+0

@kiddorails cảm ơn bạn đã dọn dẹp câu hỏi của tôi. Tôi chỉ bắt đầu sử dụng stack thường xuyên hơn và làm quen với tất cả các định dạng. Việc xem xét các chỉnh sửa của bạn đã hữu ích khi thấy nơi tôi có thể cải thiện. Trong sự tò mò, tại sao bạn sẽ chỉnh sửa một Cảm ơn bạn vào cuối câu hỏi của tôi để thể hiện sự cảm kích đối với mọi người trong cộng đồng? –

+0

Tôi vui mừng vì nó đang giúp bạn nắm bắt các câu hỏi định dạng vv Cá nhân, tôi muốn trực tiếp nhìn và hiểu các yêu cầu câu hỏi; của bạn 'cảm ơn' lưu ý là lớn hơn một dòng và đã được lặp lại bối cảnh của câu hỏi, vì vậy tôi loại bỏ nó :). Bạn luôn có thể đính kèm chỉ 'Cảm ơn' hoặc 'Cảm ơn bạn!' trong câu hỏi của bạn mặc dù :) – kiddorails

+0

Đủ công bằng. Cảm ơn bạn đã trả lời dưới đây. –

Trả lời

26

path tùy chọn cùng với tài nguyên phải trợ giúp.

resources :posts, :path => 'blogs' do 
    resources :comments 
end 

này sẽ thay đổi tất cả /posts/post để /blogs//blog.

Nếu bạn muốn thay đổi phương pháp helper của tuyến đường của bạn như posts_path để blogs_pathnew_post_path-new_blog_path vv, bạn có thể thay đổi nó với as thẻ.

resources :posts, :path => 'blogs', :as => 'blogs' do 
    resources :comments 
end 

Hoặc chưa tốt hơn, bạn có thể chỉ định bộ điều khiển và tuyến đường blogs trực tiếp như:

resources :blogs, controller: 'posts' do 
    resources :comments 
end 

Đây là khiếp sợ của Rails! :)

+1

Bạn cũng sẽ muốn 'as' nếu bạn muốn đổi tên người trợ giúp đường dẫn của mình thành' blog' cũng là –

+0

Đồng ý. Đã cập nhật câu trả lời của tôi với nhiều thông tin hơn :) – kiddorails

+0

@kiddorails Câu hỏi duy nhất hiện nay là làm thế nào để các lượt xem tải lên từ 'lượt xem/blog' thay vì 'lượt xem/bài đăng'? – FloatingRock

0
match 'blog/:id' => 'posts#show' 

sẽ hoạt động. Nhưng nếu bạn muốn kết hợp mọi phương thức trong bài viết điều khiển lên blog (và bạn không muốn sử dụng đường dẫn bài viết), tôi sẽ đổi tên bộ điều khiển thành blog thay vào đó và thêm tài nguyên: blog vào các tuyến.

Các vấn đề liên quan