2012-05-09 15 views
11

Belirli alt alanlarına kısıtlanır aşağıdaki yolları olduğunu varsayalım:Raylar url yardımcı içinde kısıtlanmış yol için alt alan ekleyin

App::Application.routes.draw do 
    constraints :subdomain => "admin" do 
    scope :module => "backend", :as => "backend" do 
     resources :signups 
     root :to => "signups#index" 
    end 
    end 
    constraints :subdomain => "www" do 
    resources :main 
    root :to => "main#landing" 
    end 
end 

Benim sorunum root_url ve backend_root_url hem mevcut alt alanda bir url döndürdüğünü şudur: "http : // geçerli alt etki alanı .lvh.me/"bunun yerine kaynak için belirli bir alt etki alanı. ":/// www .lvh.me http" ve backend_root_url "http: // yönetici .lvh.me /" dönmek için ben dönmek root_url istiyorum (davranış tüm kaynakların altında için aynı olmalıdır alt alan). Belki manuel url yardımcıları geçersiz kılmak gerek

class ApplicationController < ActionController::Base 
    def url_options 
    {host: "lvh.me", only_path: false}.merge(super) 
    end 
end 

:

Ben çeşitli yerlerde url seçenekleri, uygulama denetleyicisi bir varlık url_options ayarlayarak raylar 3.2 Bunu gerçekleştirmek için çalıştık? Buna nasıl yaklaşırım (yollara erişim vb.)?

Düzenleme: döndürür: (alt alan => "admin") Ben root_url kullanarak doğru bir sonuç almak mümkün değilim "http: // yönetici .lvh.me /" bağımsız akım alt alan. Ancak, bunu kodun tamamı üzerinde belirtmemeyi tercih ederim.

cevap

9

Aşağıda gösterildiği gibi "varsayılanları" kullanmak, rayların URL'lerinin doğru alt etki alanını çıkarmasını sağlar.

App::Application.routes.draw do 
    constraints :subdomain => "admin" do 
    scope :module => "backend", :as => "backend" do 
     defaults :subdomain => "admin" do 
     resources :signups 
     root :to => "signups#index", :subdomain => "admin" 
     end 
    end 
    end 

    constraints :subdomain => "www" do 
    defaults :subdomain => "www" do 
     resources :main 
     root :to => "main#landing" 
    end 
    end 
end 
+0

Bu harika çalışıyor! Karşılaştığım bir sorun, bu yalnızca temel alan adınız zaten bir alt alan içermiyorsa çalışır. Eğer varsa, şunları eklemelisiniz: host. Veya şunları ayarlayabilirsiniz: hash içeren bir ana bilgisayar döndürmek için ApplicationController # default_url_options tanımlayarak ana bilgisayar. – mltsy

+0

Ana makine adınız için zaten bir alt etki alanınız varsa, sorunu çözmüyor olsa bile geri alıyorum. Kendi yardımcı yöntemini yazmadan bunu yapmanın bir yolunu anlamadım. – mltsy

İlgili konular