Redmine插件/ Rails引擎 - 每个页面上的插件中的图像/ javascripts的路径?

时间:2011-05-02 18:27:48

标签: ruby-on-rails ruby redmine rails-engines

好吧所以我有一个Redmine插件(Rails Engines。)插件使用钩子,这样它的HTML /控件就可以在Redmine的每一页上呈现。

我正在接收此插件并将信息发送到控制器。现在我可以在javascript和css中使用两个选项:relative pathing或absolute pathing。

相对路径不适用于每个页面,因为URL路径可能从一到三个部分到路径(因为控件必须在每个页面上工作)。此选项要求我的插件每次都在URL中以相同的嵌套级别呈现。

Absolute Pathing适用于特定的安装,但是当其他人在安装时使用它时,我的插件会中断,其中路径不在域根目录下,即www.mysite.com/redmine/而不是www.mysite.com。这需要手动编辑,这根本不是优雅的。

有没有办法轻易解决这个看似简单的问题?

1 个答案:

答案 0 :(得分:1)

如果它是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}")

希望这有帮助。