Как заставить rails создавать ссылки на поддомен www? - PullRequest
3 голосов
/ 29 декабря 2011

У меня есть субдомен partners, который обслуживает контент с помощью контроллера.

URL-адреса как: http://partners.example.com/...

Есть ли способ заставить все функции _path и _url возвращать ссылки на корневой поддомен www? Поскольку ресурсы, на которые ссылаются мои ссылки, находятся не на самом поддомене, а только в корневом домене (и я не хочу обслуживать дубликаты).

Ответы [ 4 ]

7 голосов
/ 29 декабря 2011

В Rails 3.1 это можно сделать с помощью:

resource_url(:subdomain => 'www')

Но вспомогательный путь_ресурса не принимает ключ subdmain.

2 голосов
/ 29 декабря 2011

Я бы установил default_url_options для включения вашего основного хоста:

ActionController::Base.default_url_options = {:host => '...'}

Параметры, которые вы передаете link_to, переопределят их, но, как следует из названия, это позволяет вам указать значение по умолчаниюзначения.

2 голосов
/ 29 декабря 2011

Это похоже на мой ответ здесь: Как автоматически установить все ссылки на nofollow в Rails

Вместо того, чтобы не следовать (как в моем другом ответе), вы могли бы:

def link_to(name, options = {}, html_options = {})
  html_options.merge!(:host => with_subdomain("www"))
  super(name, options, html_options)
end

def with_subdomain(subdomain)
  subdomain = (subdomain || "")
  subdomain += "." unless subdomain.empty?
  [subdomain, request.domain, request.port_string].join
end

метод with_subdomain из http://railscasts.com/episodes/221-subdomains-in-rails-3

0 голосов
/ 29 декабря 2011

Здесь на эту тему наложены отличные рельсы:

http://railscasts.com/episodes/221-subdomains-in-rails-3

Ваш вопрос был слишком расплывчатым без фактических фрагментов кода ваших запросов контроллера.

Это должно получить ваш ответ, хотя. Просто настройте под свои нужды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...