default_url_options и рельсы 3 - PullRequest
17 голосов
/ 23 мая 2011

Поскольку ActionController :: Base # default_url_options устарела, мне интересно, как установить параметры URL по умолчанию в rails3.Параметры URL по умолчанию не являются статическими, но зависят от текущего запроса.

http://apidock.com/rails/ActionController/Base/default_url_options

Спасибо, Корин

Ответы [ 5 ]

24 голосов
/ 05 июня 2011

Чтобы установить параметры URL для текущего запроса, используйте что-то вроде этого в вашем контроллере:

class ApplicationController < ActionController::Base

  def url_options
    { :profile => current_profile }.merge(super)
  end

end

Теперь: profile => current_profile будет автоматически объединен с параметрами path / url.

Пример маршрутизации:

scope ":profile" do
  resources :comments
end

Просто напишите:

comments_path

и если current_profile установил to_param в 'lucas':

/lucas/comments
24 голосов
/ 23 мая 2011

Я полагаю, что предпочтительный метод заключается в том, чтобы теперь указать маршрутизатору обработать это:

Rails.application.routes.default_url_options[:foo]= 'bar' 

Вы можете поместить эту строку либо в routes.rb, либо в инициализатор.Что бы вы ни предпочли.Вы даже можете поместить его в конфигурацию вашей среды, если значения меняются в зависимости от вашей среды.

4 голосов
/ 23 августа 2012

Эта ссылка на apidock.com вводит в заблуждение.default_url_options не рекомендуется.

http://guides.rubyonrails.org/action_controller_overview.html#default_url_options

0 голосов
/ 16 января 2019

Rails.application.routes.default_url_options[:host]= 'localhost:3000'

В файле developemnt.rb / test.rb может быть более кратким, как показано ниже:

Rails.application.configure do
  # ... other config ...

  routes.default_url_options[:host] = 'localhost:3000'
end
0 голосов
/ 25 сентября 2015

В частности, для Rails 3 каноническим способом сделать это является добавление метода default_url_options к вашему ApplicationController.

class ApplicationController < ActionController::Base
  def default_url_options
    {
        :host => "corin.example.com",
        :port => "80"  #  Optional. Set nil to force Rails to omit
                       #    the port if for some reason it's being
                       #    included when you don't want it.
    }
  end
end

Мне просто нужно было самому разобраться, так что я знаю, что это работает.

Это адаптировано из Руководства по Rails 3:
http://guides.rubyonrails.org/v3.2.21/action_controller_overview.html#default_url_options

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