Giả sử tôi có một ứng dụng đường ray với 3 kiểu máy, Person, Place and Thing. Giả sử Thing sử dụng kế thừa bảng đơn, vì vậy có các lớp con FancyThing và ScaryThing. Sau đó, có các tuyến đường được xác định với map.resources :people, :places, :things
. Vì vậy, không có bộ điều khiển cho FancyThings và ScaryThings, các ThingsController xử lý một trong hai loại.Tìm tuyến đường cho lớp cơ sở của lớp STI trong Rails
Bây giờ, tôi cần có mã hiển thị danh sách mọi thứ có liên kết đến chúng. Nếu tôi có mã này trong quan điểm của tôi:
<% @items.each do |item| %>
<%= link_to item.name, item %>
<% end %>
Nếu mục là một người hoặc một Place, này hoạt động tốt, polymorphic_path
chăm sóc tạo ra con đường đúng. Nhưng nếu mục là một FancyThing hoặc một ScaryThing, điều này thổi lên, bởi vì nó sẽ cố gắng sử dụng fancy_thing_path
, mà không có tuyến đường cho. Tôi muốn bằng cách nào đó làm cho nó sử dụng thing_path
. Lý tưởng nhất là sẽ có một phương thức trên Thing và/hoặc các lớp con của nó bằng cách nào đó cho thấy các lớp con nên sử dụng lớp cơ sở để tạo ra các tuyến đường. Có một giải pháp thanh lịch cho điều này?
Đây là [vé mở] (http://dev.rubyonrails.org/ticket/10454) về phát triển đường ray. Xem vé cho các đề xuất về cách đối phó với nó. – MarkusQ