Скажем, у меня есть следующие маршруты, которые ограничены конкретными подобластей:Включить субдомен для ограниченного маршрута в Rails URL-адрес помощника
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
Моя проблема заключается в том, что root_url
и backend_root_url
и возвращает URL на текущей подобласти: «HTTP : // current-subdomain .lvh.me/"вместо этого субдомен, специфичный для ресурса. Я хотел бы root_url
вернуться «Http: // WWW .lvh.me /» и backend_root_url
вернуться «HTTP: // админ .lvh.me /» (поведение должно быть одинаковым для всех ресурсов в рамках субдомен).
Я попытался сделать это в рельсах 3.2, установив параметры URL-адреса в разных местах, один из которых url_options в контроллере приложения:
class ApplicationController < ActionController::Base
def url_options
{host: "lvh.me", only_path: false}.merge(super)
end
end
Может быть, мне нужно переопределить URL-адрес хелперы вручную? Как я могу подойти к этому (доступ к маршрутам и т. Д.)?
Edit: я могу получить правильный результат, используя root_url (: субдомна => «администратор»), который возвращает «HTTP: // админ .lvh.me /» независимо от текущего субдомена. Тем не менее, я бы предпочел не указывать это по всему коду.
Это отлично работает! Одна из проблем, с которыми я столкнулась, заключается в том, что это работает только в том случае, если ваш базовый домен еще не включает субдомен. Если это так, вы должны включить это как: host. Или вы можете установить: host, указав ApplicationController # default_url_options, чтобы вернуть хэш, содержащий: host. – mltsy
Я возвращаю его, даже если это не решит проблему, если у вас уже есть поддомен для вашего основного имени хоста. Я не понял способ сделать это, не написав собственный метод помощника. – mltsy