2012-06-29 33 views
6

Giả sử tôi muốn có một blog với Rails 3 trên trang web của mình và đó sẽ là điều duy nhất tôi có trên đó. Tôi muốn sử dụng Rails để thực hiện nó nhưng tôi không thích các URL Rails tạo ra. Tôi muốn các URL như thế này:Đường ray 3 URL không có tên bộ điều khiển

example.com/2012/05/10/foo

Tôi không muốn một cái gì đó như thế mà tôi biết làm thế nào để làm (với to_param):

example.com/entries/2012/05/10/foo

tôi vẫn muốn sử dụng những người trợ giúp như

new_entry_path(@entry) # -> example.com/new 
entry_path(@entry) # -> example.com/2012/05/10/foo 
edit_entry_path(@entry) # -> example.com/2012/05/10/foo/edit 
destroy_entry_path(@entry) 
form_for(@entry) 
link_to(@entry.title, @entry) 

v.v. sau đó tôi sẽ có ý kiến ​​và muốn làm cho họ dễ tiếp cận như nguồn lực của mình quá, như

example.com/2012/05/10/foo/comments/5

và những url cũng phải có khả năng nhận được với những người giúp việc bình thường:

edit_entry_comment_path(@entry, @comment) # -> example.com/2012/05/10/foo/comments/5/edit 

hoặc một cái gì đó như thế.

Vì vậy, có thể nhận URL mà không có tên bộ điều khiển và vẫn sử dụng các phương pháp trợ giúp url? Chỉ cần ghi đè to_param sẽ luôn thay đổi phần sau tên bộ điều khiển trong url. Nó sẽ thực sự hữu ích để có được một số mã ví dụ.

Trả lời

13

bạn routes.rb lẽ có một dòng như thế này:

resources :entries 

trong đó sản xuất các tuyến đường có dạng /entries/2012/05/10/foo.


Có tồn tại một cuộc tranh luận :path cho phép bạn sử dụng một cái gì đó bên cạnh những tên mặc định entries. Ví dụ:

resources :entries, :path => 'my-cool-path' 

sẽ tạo tuyến đường có dạng /my-cool-path/2012/05/10/foo.


Nhưng, nếu chúng ta vượt qua một chuỗi rỗng để :path, chúng ta thấy hành vi mà bạn đang tìm kiếm:

resources :entries, :path => '' 

sẽ tạo ra các tuyến đường có dạng /2012/05/10/foo.

+2

Tại sao điều này lại bị bỏ phiếu? Đó là câu trả lời đúng ... – jaredonline

+0

Vâng, tôi đang cố gắng để làm việc đó ra bản thân mình-và không chỉ là một, nhưng hai! Có lẽ nó phản đối sự phác thảo của giải pháp (tôi có thể thấy trực giác chỉ ra rằng các tuyến sẽ là '// 2012/05/10/foo' với dấu gạch chéo trước), nhưng nó chắc chắn hoạt động và chắc chắn dễ dàng hơn nhiều nhiều Rails-y hơn là reimplementing tất cả các routesful routes bằng tay. – Matchu

+0

Yea. Đó là lúc -3 khi tôi đến đây. Có lẽ vì tuyến đường bạn đã chỉ định không thực sự có công cụ/năm/tháng/ngày? – jaredonline

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