Redmine Plugin / Rails Engine - Пути для изображений / javascripts в плагине, который есть на каждой странице? - PullRequest
0 голосов
/ 02 мая 2011

Хорошо, поэтому у меня есть плагин для Redmine (Rails Engines.) Плагин использует ловушки, так что его HTML / элементы управления отображаются на каждой странице в Redmine.

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

Относительный путь не будет работать для каждой страницы, так как пути URL могут варьироваться от одного до трех разделов к пути (Так как контроль должен работать с каждой страницы).Эта опция требует, чтобы мой плагин отображался на одном и том же вложенном уровне в URL каждый раз, когда это не так.

Абсолютный путь работает для конкретной установки, но мой плагин ломается, когда другие используют его при установках, где путьне находится в корне домена, т.е. www.mysite.com/redmine/ вместо www.mysite.com.Это требует ручного редактирования, которое совсем не изящно.

Есть ли способ легко решить эту, казалось бы, простую проблему?

1 Ответ

1 голос
/ 05 мая 2011

Если это файл CSS, JS или изображения, вы можете использовать помощники тегов с опцией :plugin (их исправляет движок Rails)

stylesheet_link_tag 'redmine_kanban.css', :plugin => 'redmine_kanban'
javascript_include_tag 'jquery-1.3.2.min.js', :plugin => 'redmine_kanban'
image_tag 'example.png', :plugin => 'redmine_kanban'

Убедитесь, что имя плагина соответствует его каталогу установки (например, vendor / plugins / redmine_kanban в приведенном выше примере).

Для ссылки ресурсов, таких как изображения в вашем CSS, вы можете использовать внешний файл CSS и url(../images/example.png. Rails Engines скопирует каталог assets / в public / plugin_assets / plugin_name / [images | javascripts | stylesheets], поэтому вам просто нужно перейти в каталог, чтобы перейти к изображениям.

JavaScript немного сложнее. Лучший способ - экспортировать переменную JavaScript текущего относительного пути. Я делаю что-то вроде этого, чтобы экспортировать строки перевода языка в JSON для использования в моем JavaScript.

javascript_tag("var redmineRootPath = #{Redmine::Utils.relative_url_root}")

Надеюсь, это поможет.

...