Make rails url helpers использовать соответствующий протокол?

Эй, я разрешаю доступ к моему приложению через https и http, и все работает нормально, за исключением тех случаев, когда я использую любой из методов _url. Если я получаю доступ к представлению, которое использует такой метод с помощью https, он становится обслуживаемым как https, но сгенерированный url использует протокол http. Мне интересно, нормально ли это, или есть способ сделать это автоматически. Я надеялся, что рельсы автоматически сгенерируют соответствующий URL-адрес, основываясь на доступе к странице.

Если это не так, то каким будет лучший способ создать соответствующий URL-адрес? Будет ли это работать?

if request.ssl?
  some_url(:protocol => "https")
else
  some_url
end

Я бы предпочел, если бы смог придумать более автоматический подход. Может быть, если методы url с рельсами генерируются ://somedomain.com/some/path, я предполагаю, что он автоматически адаптирует правильный протокол.

Спасибо, я был бы признателен за любую помощь.

Ответ 1

Похоже, есть несколько подходов. Ни один из них не может быть идеальным в вашей конкретной среде, но в ActionView:: Helpers существует метод url_for, который может получить то, что вы хотите если вы начнете использовать это. Другой простой вариант - использовать относительные URL-адреса (например, "/controller/action" вместо "https://myawesomesite.com/controller/action" ), которые также могут быть сгенерированы с помощью метода url_for.

Кроме того, похоже, что вы получаете возможность работать, или копаться в пути, генерируя код пути и изменяя его самостоятельно.

Не самый идеальный ответ, который вы искали, но там мои $0,02!