Подтвердить что ты не робот

Как установить root_url

В моем приложении Ruby on Rails 3.1 у меня есть ссылка вроде этого:

<%= link_to 'Home', root_url %>

На мой dev. машина делает ссылку "localhost: 3000". При производстве он ссылается на IP-адрес, подобный этому: "83.112.12.27:8080". Я хотел бы заставить рельсы отображать адрес домена вместо IP-адреса. Как установить root_url?

4b9b3361

Ответ 1

В настройках маршрута:

 root :to => 'welcome#index'

и в ваших ссылках:

<%=link_to "Home", root_path %>

Он отобразит

<a href="/">Home</a>

Итак, в вашем локальном хостинге Это приведет вас к

http://localhost:3000/

и на вашем рабочем сервере. Это займет у вас

http://yourdomian.com/

а routes.rb по умолчанию выполняет index действие контроллера welcome.

PS. вам также нужно удалить index.html из каталога public, чтобы использовать это.


ОБНОВЛЕНИЕ

Немного больше о маршрутизации:

Релейная маршрутизация из внешнего устройства

Ответ 2

Вы ищете параметр URL-адреса ActionController по умолчанию. Поэтому вы можете сделать что-то вроде:

class ApplicationController < ActionController::Base
  def default_url_options
    if Rails.env.production?
      {:host => "www.example.com"}
    else  
      {}
    end
  end
end

Это также работает для ActionMailer. Кроме того, оба могут быть установлены в вашей среде .rb или application.rb

# default host for mailer
config.action_mailer.default_url_options = {
  host: 'example.com', protocol: 'https://'
}

# default host for controllers
config.action_controller.default_url_options = {
  :host => "www.example.com"
}

Ответ 3

Возможно, вы могли бы сделать что-то подобное в своем ApplicationController:

class ApplicationController < ActionController::Base
  helper_method :home_uri

  def home_uri
    Rails.env.production? ? 'http://www.yourdomain.com' : root_url
  end
  ...
end

И затем измените свою ссылку так: <%= link_to 'Home', home_uri %>

Это делает вспомогательный метод home_uri, который возвращает желаемый URL-адрес, если приложение запускается в среде разработки. Я не думаю, что вы можете легко перезаписать root_url, и я также думаю, что это, вероятно, плохая идея. У меня был вспомогательный метод с uri вместо url, потому что rails использует маршрутизатор для автоматического создания методов, заканчивающихся url, поэтому, если у вас есть маршрут с именем home, это решение не будет перезаписываться или конфликтует с помощью указанного метода вспомогательного маршрута. Если вы заинтересованы, вы можете узнать больше об именованных методах маршрутизации.