Мне интересно, в чем разница между этими двумя способами: ActionView::Helpers::UrlHelper.url_for
и ActionController::UrlWriter.url_for
?В чем разница между методами url_for?
1
A
ответ
1
Версия в UrlHelper
является той, которая доступна в ваших представлениях. Вот его источник:
def url_for(options = {})
options ||= {}
url = case options
when String
escape = true
options
when Hash
options = { :only_path => options[:host].nil? }.update(options.symbolize_keys)
escape = options.key?(:escape) ? options.delete(:escape) : true
@controller.send(:url_for, options)
when :back
escape = false
@controller.request.env["HTTP_REFERER"] || 'javascript:history.back()'
else
escape = false
polymorphic_path(options)
end
escape ? escape_once(url) : url
end
В случае, если параметр, переданный в url_for
является Hash он делегирует controller.url_for
, которые в свою очередь делегатов к ActionController::UrlWriter.url_for
.
Версия в ActionView::Helpers::UrlHelper.url_for
затем добавляет дополнительное поведение, когда оно вызывается с использованием других типов аргументов. В случае, когда String передается, для вас это ускользает. При вызове с символом: назад, который либо ссылается на референт, если он доступен, либо возвращается к вызову JavaScript history.back()
.
Смежные вопросы
- 1. в чем разница между этими методами соления
- 2. В чем разница между методами хэширования php?
- 3. В чем разница между методами transform.Rotate?
- 4. В чем разница между этими методами .find()?
- 5. В чем разница между этими методами создания
- 6. В чем разница между всеми методами os.popen()?
- 7. В чем разница между этими двумя методами?
- 8. В чем разница между различными HTTP-методами?
- 9. В чем разница между двумя методами распределения?
- 10. В чем разница между этими ожидаемыми методами?
- 11. В чем разница между методами ввода?
- 12. В чем разница между этими методами инициализации?
- 13. В чем разница между методами UITableView и эквивалентными методами UITableViewDatasource?
- 14. Разница между методами журнала
- 15. Разница между методами «батут»
- 16. Разница между методами
- 17. Разница между методами HTTP
- 18. Разница между PubSub и методами
- 19. Разница между методами класса доступа
- 20. В чем разница между методами getRequestURI и getPathInfo в HttpServletRequest?
- 21. В чем разница между этими двумя методами литья в C++?
- 22. В чем разница между методами экземпляра и getterMethods в sequelizejs?
- 23. В чем разница между различными методами * get helper * в Magento?
- 24. В чем разница между методами configuration.files и configuration.copy в Gradle?
- 25. В чем разница между методами bind и live в jQuery?
- 26. В чем разница между методами len() и sys.getsizeof() в python?
- 27. В чем разница между этими методами post в Zend?
- 28. В чем разница между ниже двумя методами в C++
- 29. В чем разница между методами действия MagicalRecord в iOS
- 30. В чем разница между следующими двумя методами в Java
Так что url_for доступен в виде всего лишь оболочка для ActionController :: UrlWriter.url_for? – Eimantas
В случае, когда вы называете это хэшем, да. Это дает несколько бит дополнительного поведения, как описано в ответе. – mikej