Создание полного url-адреса для javascript в rails (аналогично javascript path, но url)


Как можно создать абсолютную ссылку на файл javascript.

Я предполагаю, что должно быть что-то вроде приведенного ниже (что, к сожалению, не представляется возможным):

javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'

Вместо:

javascript_path 'main' # -> '/javascripts/main.js'

Мне нужен абсолютный URL, потому что этот файл javascript будет использоваться в букмарклете.
Кроме того, мне нужно то же самое для css-файла.

Спасибо,
Дмитрий.

3 6

3 ответа:

Абсолютные URL-адреса файлов javascript и css теперь доступны в Rails 4 в модуле ActionView::Helpers::AssetUrlHelper через конвейер активов. В вашем случае этоjavascript_url и его псевдоним url_to_javascript и соответствующие методы для таблиц стилей.

И результат в точности такой, как вы упомянули в своем вопросе:

javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'
Хотя этот вопрос был задан много веков назад, надеюсь, что он поможет людям, ищущим ответ на тот же вопрос в будущем.

Я написал этого маленького помощника, чтобы сделать это:

def absolute_javascript_url(source)
  uri = URI.parse(root_url)
  uri.merge(javascript_path(source))
end

Ключевой частью является URI.merge , который автоматически и правильно объединит относительный javascript_path с root_url.

Может быть, вы могли бы просто использовать javascript_path в сочетании с root_url?

Например:

root_url + javascript_path("main") 

root_url автоматически генерируется вашим корневым маршрутом.

Вы также можете настроить помощников Rails на использование определенного "базового пути", установив ActionController::Base.asset_host в файле конфигурации вашей среды. Подробнее читайте в документации .