2012-06-13 20 views
5

Tôi đang viết một Công cụ Rails 3 có thể gắn kết và tôi đang kết hợp các tuyến của công cụ với ứng dụng của máy chủ lưu trữ. Tuy nhiên, các tuyến đường của ứng dụng máy chủ lưu trữ được ưu tiên hơn các tuyến đường của công cụ của tôi. Có cách nào tôi có thể ghi đè lên các tuyến đường của ứng dụng máy chủ (cụ thể là tuyến đường gốc) không?Ghi đè tuyến gốc của ứng dụng máy chủ từ Công cụ có thể gắn kết

Dưới đây là các tuyến cơ của tôi trong my_enging/config/routes.rb:

MyEngine::Engine.routes.draw do 
root :to => "home#index" 
end 

# Mount engine routes to host application 
Rails.application.routes.draw do 
    mount MyEngine::Engine, :at => "/" 
end 

Và đây là kết quả của rake routes, với gốc của máy chủ đang ngồi ở đầu trang:

root/welcome#index 
my_engine/MyEngine::Engine 
root/home#index 

Spree là một trong những viên ngọc mà thực hiện điều này, nhưng Tôi đã không thể tìm thấy cách họ đang thực hiện điều này.

Trả lời

0

Mọi người có nhiều khả năng làm điều ngược lại, vì vậy tôi không thể tìm ra lý do tại sao bạn cần điều này, vì khả năng ghi đè lên các tuyến đường của động cơ dự kiến ​​sẽ được mong đợi. Trên thực tế, tôi không có câu trả lời về cách buộc động cơ ghi đè các tuyến ứng dụng, nhưng:

Spree đang thêm các tuyến động bằng cách nào đó qua eval_block, tôi đoán vậy.

Bạn chỉ có thể bỏ qua root to: cũng như tất cả các tuyến đường không mong muốn trong ứng dụng của mình, và sau đó các tuyến đường Engine sẽ xuất hiện. Đừng giữ cả hai. Tôi không thấy root được chỉ định trong ứng dụng của bạn, nhưng Tôi vừa chạy thử nghiệm và mọi thứ đều hoạt động!

W12::Engine.routes.draw do 
    root to: 'details#index' 
end 

MyCarsApplication.routes.draw do 
    mount Common::Engine => "/" 
end 

Và chỉ có một con đường:

root/details#index 

This post about creating not isolated engines cũng có thể giúp đỡ.

Nếu bạn tìm thấy câu trả lời chính xác, vui lòng đăng câu trả lời đó.

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