Bootstrap 不适用于 Redmine 插件
Bootstrap won't work in Redmine plugin
我花了几个小时尝试将 bootstrap 用于我的 rails 网络应用程序,但它完全没有任何作用!我无法为它调用任何 classes!
这是我的 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 class,就像它根本不存在一样! button_to 行完全正常...
我的 Gemfile 包括 bootstrap(是的,我 运行 更新后安装了 bundle):
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;
}
...
我什至还把 bootstrap 包括在我的 application.js 中:
// 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"):
我不明白那是什么意思。为什么它在样式表目录中寻找 bootstrap 文件? Google 从未听说过此错误消息!
抱歉让您失望了,但是如果您使用 Bootstrap 构建 Redmine 插件,那您就错了。插件(无论针对哪个平台)都应该提供与主机平台本身相关的无缝用户体验。由于 Redmine 未使用 Bootstrap,因此您没有理由将其用于您的插件。
相反,您应该查看 Redmine 中的 app/views
目录并在您的插件中使用相同的 HTML 元素。您将拥有更无缝的 UI 和更少的自定义需求 CSS...希望对您有所帮助。
Redmine 不支持资产管道(参见 here,4 年前的对话),这意味着您不能在此处使用 sass/scss 文件。您首先需要获取常规 css / js 文件并在您的视图中手动导入它们。
如果你真的想使用bootstrap,你可以先安装redmine_bootstrap_kit插件,它为你提供了帮助,以便更方便(我不是这个的所有者)。
参考资料:
每次你运行Redmine在public/plugin_assets/your_plugin
文件夹中时,插件assets
目录会自动复制。
<%= stylesheet_link_tag 'style', :plugin => 'users' %>
将查找位于 public/plugin_assets/users/stylesheets/style.js
的 style.css
文件
<%= javascript_include_tag 'script', :plugin => 'users' %>
将查找位于 public/plugin_assets/users/javascripts/script.js
的 script.js
文件
请注意,通常 .js
和 .css
文件包含指向其他资源(图像、字体...)的链接。然后,您还需要在 assets/images
/ assets/fonts
... 中包含这些资源,并确保 .js
和 .css
文件中提到的相对路径仍然有效。
我花了几个小时尝试将 bootstrap 用于我的 rails 网络应用程序,但它完全没有任何作用!我无法为它调用任何 classes!
这是我的 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 class,就像它根本不存在一样! button_to 行完全正常...
我的 Gemfile 包括 bootstrap(是的,我 运行 更新后安装了 bundle):
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;
}
...
我什至还把 bootstrap 包括在我的 application.js 中:
// 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"):
我不明白那是什么意思。为什么它在样式表目录中寻找 bootstrap 文件? Google 从未听说过此错误消息!
抱歉让您失望了,但是如果您使用 Bootstrap 构建 Redmine 插件,那您就错了。插件(无论针对哪个平台)都应该提供与主机平台本身相关的无缝用户体验。由于 Redmine 未使用 Bootstrap,因此您没有理由将其用于您的插件。
相反,您应该查看 Redmine 中的 app/views
目录并在您的插件中使用相同的 HTML 元素。您将拥有更无缝的 UI 和更少的自定义需求 CSS...希望对您有所帮助。
Redmine 不支持资产管道(参见 here,4 年前的对话),这意味着您不能在此处使用 sass/scss 文件。您首先需要获取常规 css / js 文件并在您的视图中手动导入它们。
如果你真的想使用bootstrap,你可以先安装redmine_bootstrap_kit插件,它为你提供了帮助,以便更方便(我不是这个的所有者)。
参考资料:
每次你运行Redmine在public/plugin_assets/your_plugin
文件夹中时,插件assets
目录会自动复制。
<%= stylesheet_link_tag 'style', :plugin => 'users' %>
将查找位于 public/plugin_assets/users/stylesheets/style.js
style.css
文件
<%= javascript_include_tag 'script', :plugin => 'users' %>
将查找位于 public/plugin_assets/users/javascripts/script.js
script.js
文件
请注意,通常 .js
和 .css
文件包含指向其他资源(图像、字体...)的链接。然后,您还需要在 assets/images
/ assets/fonts
... 中包含这些资源,并确保 .js
和 .css
文件中提到的相对路径仍然有效。