7

Tôi đang thực hiện một số thử nghiệm với Động cơ có thể lắp. Đầu tiên tôi cần ý kiến ​​của bạn cho một kịch bản, Có một ý tưởng hay là chúng tôi tạo ra "một phần lớn các mô-đun" trong một ứng dụng như là "động cơ gắn kết".Gắn động cơ trên thanh công cụ tên miền phụ 3.1

Tôi đã thử công cụ này hoạt động tuyệt vời, Trong công cụ gắn kết, chúng tôi có thể truy cập các mô hình ứng dụng trên toàn cầu và trong ứng dụng, chúng tôi có thể truy cập các mô hình động cơ với tiền tố mô-đun. Vì vậy, nó hoạt động tuyệt vời cho tôi.

Bây giờ đến câu hỏi ban đầu:

Tôi muốn gắn một động cơ để một tên miền phụ, do đó mọi yêu cầu với tên miền phụ cụ thể nên được phục vụ bởi rằng công cụ cụ thể. Tôi đã sử dụng mã này.

root :to=>'dashboard#index' 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 

Trong trường hợp này mydomain.comadmin.mydomain.com đi vào dashboard controller. Nếu tôi thay đổi các ưu đãi như thế

scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
root :to=>'dashboard#index' 

Trong trường hợp này mydomain.comadmin.mydomain.com đi vào engine specific root controller.

Làm cách nào chúng ta có thể hoàn thành kịch bản này và gắn kết một công cụ trên miền phụ cụ thể?

Trả lời

11

tôi hoàn thành nhiệm vụ bằng cách sử dụng các mục tuyến đường:

scope :subdomain => 'www' do 
    root :to=>'dashboard#index' 
end 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
+0

Điều gì sẽ xảy ra nếu tôi muốn có thể truy cập vào tên miền của mình foo.com ở cả foo.com và www.foo.com? Các thay đổi ở trên khiến không thể tải nội dung từ foo.com. – jkndrkn

+0

Tham khảo câu trả lời @samuelkobe ở trên. –

+0

Không thể sử dụng regex trong: tên miền phụ? ví dụ: scope: subdomain =>/^ $ | www/do ... –

5

Làm việc với Rails 3.2.12 và ruby ​​1.9.3-194 tôi đi đến một giải pháp khác nhau mà cũng làm việc tại địa phương để tránh www. vấn đề miền phụ trong khi cho phép có một Công cụ tại một tên miền phụ nhất định.

get "home/index" 

constraints :subdomain => 'store' do 
    mount Spree::Core::Engine, :at => '/' 
end 

root :to => 'home#index' 

Tôi hoàn toàn có thể sai nhưng nó đang hoạt động cho đến nay.

+0

Rất hữu ích! Chỉ thị gắn kết có thể được thực hiện thậm chí ngắn hơn bằng cách sử dụng 'mount Spree :: Core :: Engine => '/'' – Epigene