2010-03-24 29 views
5

Tôi có một bộ điều khiển không có bất kỳ mô hình liên quan nào. Bộ điều khiển này là để span một số thông tin từ các mô hình khác nhau. Tôi có rất nhiều hành động ở đó, trong đó xác định số lượt xem nhất định trên trang. Điều gì sẽ là cách tốt nhất để tổ chức các tuyến đường cho bộ điều khiển này?Ruby on Rails cơ bản Câu hỏi về định tuyến

Điều tôi muốn là có/bảng điều khiển/điểm nào đó đến bất kỳ hành động nào trong bộ điều khiển trang tổng quan. Không hành động như mới/chỉnh sửa nhưng tùy ý (showstats, vv).

Với thử và sai tôi làm một cái gì đó như thế này:

map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action 

Bây giờ có thể truy cập vào các URL bằng cách sử dụng helper:

dashboard_url('actionname') 

approch Điều này dường như được làm việc ok, nhưng là đây là con đường để đi? Tôi không hoàn toàn chắc chắn hiểu, làm thế nào là tên phương thức trợ giúp được tạo ra. Làm thế nào để tạo ra cùng một tên trợ giúp như trong bộ điều khiển cơ bản "action_controller_url"? Điều đó sẽ chung chung hơn và làm cho mã phù hợp hơn.

Xin cảm ơn trước.

Trả lời

5

Bạn không cần chỉ định khóa :action => :action trong tuyến đường, điều này được thực hiện cho bạn rồi. Khác hơn thế, làm thế nào bạn đã làm nó là tốt.

Bạn cũng có thể xác định nó như một biểu tượng: dashboard_url(:actionname), nhưng bạn đã biết rằng;)

+0

Có cách nào để định dạng lại trình trợ giúp hoặc cung cấp tùy chỉnh không? IE: actionname_dashboard_url thay vì dashboard_url (: actionname)? – mdrozdziel

+0

Bạn sẽ cần phải xác định một tuyến đường mới cho mỗi một. Phương thức tuyến đường số ít hơn một vài ký tự dài hơn, nhưng kết quả là ít mã tổng thể hơn. –

+0

Vâng, tôi mặc dù có một số cơ chế tự động, mà tạo ra những người giúp đỡ trên bay, nhưng kể từ đó không phải là trường hợp, tôi sẽ chỉ dính vào dashboard_url (: actionname) ước. – mdrozdziel

2

Nếu bạn muốn phương pháp helper cho tất cả các hành động bảng điều khiển của bạn, bạn nên xác định tất cả chúng sử dụng tên các tuyến đường, ví dụ:

map.example_dashboard 'dashboard/example', :controller => 'dashboard', :action => 'example' 
map.another_dashboard 'dashboard/another', :controller => 'dashboard', :action => 'another' 

Sau đó đường ray sẽ tạo một trình trợ giúp _url và một _path cho mỗi tuyến đường được đặt tên. Tuy nhiên, tôi thích cách tiếp cận của bạn, nó linh hoạt hơn và đơn giản hơn.

+0

Sẽ không phải là trang chỉ mục cho OrdersController và ClientsController là một nơi tốt hơn để phục vụ "bảng điều khiển" này? –

+0

Chắc chắn, tôi chỉ đang tạo nên tên hành động cho ví dụ của mình. Tôi sẽ đổi nó thành thứ khác. – Teoulas

0

Cách tạo cùng tên trợ giúp như trong bộ điều khiển cơ bản "action_controller_url"?

map.action_controller(
    'action_controller', 
    :controller => 'controller', 
    :action => 'action', 
    :conditions => { :method => :get } # You can restrict the HTTP reqs allowed 
) 
+0

Đây không thực sự là câu trả lời. Nếu tôi sẽ có 50 hành động, sau đó tôi sẽ phải sao chép mã này 50 lần hoặc tạo một số vòng ma quỷ trên bản đồ ... – mdrozdziel