【问题标题】:Ruby on rails files setupRuby on rails 文件设置
【发布时间】:2017-02-04 02:24:40
【问题描述】:

我对应该放置公共文件的文件夹有一些疑问。
我们在根路径中找到了一个名为 public 的文件夹和 app 中的其他一些文件夹(对我来说是 rails 5.0.1),让我向您展示那些对我来说听起来很奇怪的文件夹:

  • app/assets/(图片 | javascript | 样式表)
  • 应用/视图/页面

在阅读了多个教程和现有的公共项目后,我看到有人将他的 web 模板放在 public 中(包括 js、css 和图像)。
然而,在我的情况下,因为我也看过几次并发现它的逻辑,我将我的模板放在 assets 中,将我的 js、sass(在我的情况下)文件和图像分开已由 RoR 生成器创建的文件夹。

另外,我将文件放入资产中似乎是合乎逻辑的,因为我的主要布局将使用框架默认 API 将模板文件放入资产中。以下行适用于我并将加载我的 app/assets/stylesheets/ app.css.scss 文件

<%= stylesheet_link_tag    'app', media: 'all', 'data-turbolinks-track': 'reload' %>

希望有人能解释一下更好的方法,我是 Rails 的初学者,谢谢。

【问题讨论】:

  • 把你的 js、sass 和图片放在 assets 目录下,这会将它们添加到 rails 资产管道。

标签: ruby-on-rails templates web ruby-on-rails-5


【解决方案1】:

应用程序/资产/

这是您放置自定义资产(您拥有并为您的应用程序自定义的图像、js/css 脚本)的位置

供应商/资产/

这适用于您在应用中使用的第三方库(carousel js 插件等)

.
├── app
│   ├── assets (custom assets specific to your app)  
├── public (static-files like error pages, favicon, etc which does not change much)
├── vendor
│   └── assets (third party libraries that your app uses)

预编译资产

config/initializers/assets.rb的资产预编译路径中添加应用程序中使用的资产(图像、js/css文件)的所有路径(默认包含application.css和application.js)

使用

预编译时的所有资产
bundle exec rails assets:precompile

这会生成 public/assets 目录,其中包含在您的预编译路径中配置的所有资产作为易于服务的静态资产,然后将其提供给您的应用程序响应。

【讨论】:

  • 好的,所以供应商/资产应该包含我的库?例如 Foundation 或 Bootstrap ?
  • 感谢非常有帮助的回答!另一个问题,我没有在资产/样式表中使用默认的 application.css,我使用了我正确的 app.css.scss(用于我的 css 代码中的 image-url)。是坏还是坏?我不使用要求等。我不明白它是如何工作的。 Rails 会自行编译我的 scss 文件吗?
  • 没关系..如果您不想使用,则不需要使用 application.css .. Rails 在gem 'sass-rails' 的帮助下将 .scss 文件预编译为 CSS .. 包含它如果您还没有,则捆绑
  • 哦,好的,谢谢。但是 atm 似乎他可以阅读它,我可以看到我的网站使用 .css.scss。看起来很奇怪
  • 好吧,看来sass-rails已经默认安装了;)