default_url_options и рельсы 3
Поскольку ActionController::Base#default_url_options устарела, мне интересно, как установить параметры URL по умолчанию в rails3. Параметры URL по умолчанию не являются статическими, но зависят от текущего запроса.
http://apidock.com/rails/ActionController/Base/default_url_options
Спасибо Корин
4 ответа
Чтобы установить параметры 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
Я полагаю, что предпочтительный метод заключается в том, чтобы теперь сказать маршрутизатору обработать это:
Rails.application.routes.default_url_options[:foo]= 'bar'
Вы можете поставить эту строку в любом routes.rb
или инициализатор. Что бы вы ни предпочли. Вы даже можете поместить его в конфигурацию вашей среды, если значения меняются в зависимости от вашей среды.
Эта ссылка на apidock.com вводит в заблуждение. default_url_options не рекомендуется.
http://guides.rubyonrails.org/action_controller_overview.html
Rails.application.routes.default_url_options[:host]= 'localhost:3000'
В developmnt.rb / test.rb, может быть более кратким, как показано ниже:
Rails.application.configure do
# ... other config ...
routes.default_url_options[:host] = 'localhost:3000'
end
В частности, для 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