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