Bootstrap在Redmine插件中不起作用

时间:2016-08-17 17:30:14

标签: css ruby-on-rails twitter-bootstrap redmine redmine-plugins

我花了好几个小时试图为我的rails网络应用程序使用bootstrap,但是它什么也没做!我不能为它打电话给任何课程!

这是我的index.html.erb:

<div class="center">
  <h1>Welcome to the User Database</h1>
</div>

<div class="jumbotron">
  <h2>
  This is the home page for the User Database.
  </h2>

  **<%= link_to "Add new entry", new_user_path, class: "btn btn-primary" %>
  <%= button_to "Search", users_search_path, class: "button", :method => :get %>**
</div>

<!-- User Image -->
<div class="center">
  <%= image_tag('user.jpg', :plugin => 'users') %>
</div>

<!-- Style sheet -->
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'style', :plugin => 'users' %>
<% end %>

注意粗体代码...... link_to行完全忽略了bootstrap类,就像它甚至不存在一样! button_to行完全正常......

我的Gemfile包含bootstrap(是的,我在更新后运行了bundle install):

source 'https://rubygems.org'

if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.5.0')
  abort "Redmine requires Bundler 1.5.0 or higher (you're using #{Bundler::VERSION}).\nPlease update with 'gem update bundler'."
end

#Trying to get bootstrap...?
gem 'bootstrap-sass', '3.3.6'

gem "rails", "4.2.3"
gem "jquery-rails", "~> 3.1.3"

...

另外,我的css文件肯定包括bootstrap:

@import "bootstrap-sprockets";
@import "bootstrap";

/* mixins, variables, etc. */

/* universal */

body {
  padding-top: 0px;
}

section {
  overflow: auto;
}

...

我甚至还在application.js中包含了bootstrap:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require_tree .

它只是赢了工作!我唯一能想到的是,我正在构建我的rails应用程序作为Redmine的插件的一部分,并且它以某种方式搞乱一切......但我不知道如何!

更新:

我试过这样做:

<% content_for :header_tags do %>
  <%= stylesheet_link_tag 'application', :plugin => 'users' %>
<% end %>

但我得到了这个神秘的错误!

ActionController::RoutingError (No route matches [GET] "/plugin_assets/users/stylesheets/bootstrap"):

我不明白这意味着什么。为什么要在stylesheets目录中查找bootstrap文件? Google从未听说过此错误消息!

2 个答案:

答案 0 :(得分:2)

很抱歉让您失望,但如果您使用Bootstrap构建Redmine插件,那么您做错了。插件(无论哪个平台)应该提供与主机平台本身无缝的用户体验。由于Redmine没有使用Bootstrap,因此没有理由将它用于您的插件。

相反,您应该查看Redmine中的app/views目录,并在插件中使用相同的HTML元素。你将拥有更加无缝的用户界面,减少对自定义CSS的需求...希望有所帮助。

答案 1 :(得分:1)

Redmine不支持资产管道(请参阅here,4年前的对话),这意味着您无法在此处使用sass / scss文件。首先需要获取常规的css / js文件,然后在视图中手动导入每个文件。

如果你真的想使用bootstrap,你可以先安装redmine_bootstrap_kit插件,为你提供帮助,以使它更方便(我不是这个的拥有者)。

有关信息:

每次在assets文件夹中运行Redmine时,都会自动复制插件public/plugin_assets/your_plugin目录。

<%= stylesheet_link_tag 'style', :plugin => 'users' %> 将查找style.css

中的public/plugin_assets/users/stylesheets/style.js文件

<%= javascript_include_tag 'script', :plugin => 'users' %> 将查找script.js

中的public/plugin_assets/users/javascripts/script.js文件

请注意,通常.js.css个文件包含指向其他资源(图片,字体...)的链接。然后,您还需要在assets/images / assets/fonts中包含这些资源,并确保.js.css文件中提到的相对路径仍然有效。< / p>