2013-08-26 17 views
5

Dưới đây là tuyến đường của tôi nộpTại sao Rails chỉ đặt tên một số tuyến đường của tôi?

Dumb::Application.routes.draw do 

    # an auto-named route 
    get '/a/b',   to: 'a#b' 

    # apparently not auto-named??? 
    get '/a/z/:something', to: 'a#z' 

end 

Dưới đây là đầu ra của rake routes

a_b GET /a/b(.:format)   a#b 
    GET /a/z/:something(.:format) a#z 

Wow rằng sucks! Ít nhất là vì mục đích nhất quán. Nếu tôi thay đổi con đường a#z để

get '/a/z/:something', to: 'a#z', as: "a_z" 

rake routes sẽ hiển thị

a_b GET /a/b(.:format)   a#b 
a_z GET /a/z/:something(.:format) a#z 

Ok đó là tốt, nhưng cần phải đặt tên cho con đường như thế là gây phiền nhiễu.

Đây có phải là giải pháp duy nhất không?

+0

Tôi có thể sai, nhưng tôi nghĩ bảng định tuyến chỉ gán tên tự động khi tuyến đường đủ đơn giản để hoạt động. Việc thêm thông số có thể gây nhầm lẫn. – tadman

Trả lời

2

Đoán của tôi là Rails không thể gán tên cho tuyến đường của bạn vì nó không hiểu nó. Thông thường, bạn sẽ muốn viết tuyến đường của bạn như vậy:

/a/:id/b/:id # instead of /a/b/:id which Rails does not understand. 

Rails bản đồ a để một bộ điều khiển với một trường hợp mô hình với id :idb khác điều khiển với một ví dụ mô hình với id :id.

/a/b/:id không đề cập đến bất kỳ điều khoản nào về quy ước Rails.

Bắt GET /a/b có tên là a_b chỉ là một Rails đoán được thực hiện nhưng không thể thực hiện được GET /a/z/:something. No se như thê nao? a_z_something?

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