【问题标题】:Add a new folder to asset path in rails 4将新文件夹添加到 rails 4 中的资产路径
【发布时间】:2014-04-21 06:44:52
【问题描述】:

我想在app/assets创建一个新文件夹,在这个文件夹中我有一些文件,每个文件都有css文件夹和javascript文件夹,如下所示:

app/assets/plugins/bootstrap/css/bootstrap.min.css app/assets/plugins/bootstrap/js/bootstrap.min.js

我使用下面的代码来定义css 文件,但不是真的,rails 无法找到和加载bootstrap.min.css:

<%= stylesheet_link_tag "bootstrap.min", media: "all", "data-turbolinks-track" => true %>

<%= stylesheet_link_tag "../plugins/bootstrap/css/bootstrap.min", media: "all", "data-turbolinks-track" => true %>

如何从plugin 文件夹中声明css 和javascript?

注意: 当我想通过这个地址在浏览器中查看css 文件时:

http://localhost:3000/assets/plugins/bootstrap/css/bootstrap.min.css

我得到以下错误: No route matches [GET] "/assets/plugins/bootstrap/css/bootstrap.min.css"

但是对于存在于assets/stylesheets/ 中的css 文件,我可以通过像top 这样的输入地址在浏览器中看到css 文件。为什么不同的 beetwin stylesheets 和 plugins 目录?

【问题讨论】:

  • 通常情况下,添加到资产路径的所有资产只能通过地址http://localhost:3000/assets/bootstrap.min.css而不是http://localhost:3000/assets/plugins/bootstrap/css/bootstrap.min.css在浏览器中查看。为什么你想要这样的行为?

标签: ruby-on-rails-4 asset-pipeline


【解决方案1】:

在application.rb 中,添加以下行:

config.assets.enabled = true
config.assets.paths << Rails.root.join("app", "assets", "plugins", "bootstrap","css")
config.assets.paths << Rails.root.join("app", "assets", "plugins", "bootstrap","js")

然后你就可以在浏览器中访问bootstrap.min.css和bootstrap.min.js了,

即http://localhost:3000/assets/bootstrap.min.css / http://localhost:3000/assets/bootstrap.min.js

这意味着您已将上述内容添加到资产路径中。

现在您可以使用stylesheet_link_tag 或javascript_include_tag 调用它。

希望对你有帮助:)

【讨论】:

  • 是的,我尝试了它并且工作。我在plugins 中有很多目录。对于每一个我都必须在application.rb中添加一个表达式?!!你知道在application.rb中添加所有目录的简单方法吗?
  • 如果要单独维护插件,在不同的文件夹下,则需要单独添加。否则,维护app/assets/plugins/bootstrap/js下的所有插件JS文件和app/assets/plugins/bootstrap/css下的CSS文件。所以那会很好。
  • 它在开发模式下对我有用。当我部署到服务器时它不起作用。请看一下这个问题:stackoverflow.com/questions/34466781/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2014-03-08
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
相关资源
最近更新 更多