Rails 新手问题:assests pipline

bryanwong · 2012年02月22日 · 最后由 shawnyu 回复于 2012年02月22日 · 3779 次阅读

在 development 环境:

  1. 把图片放在 app/assests/images/目录下,直接 image_tag 调用吗?测试的时候失败了。
  2. Css, js 文件直接放到 app/asseste/javascripts 目录, 需要在 application.js 包含吗?需要运行 rake precompile 命令吗?

在 production 环境:

  1. js 性文件能有中文字符吗?
  2. Heroku 有什么特别需要改变的地方吗?

谢谢!

2. Css, js文件直接放到 app/asseste/javascripts 目录
需要在application.js 包含吗?需要运行 rake precompile 命令吗?

我不直接回答你了。你可以到官方文档的 Asset Organization 章节看 assests pipline 是怎么管理这些资源文件的

rake precompile 只是预先将所有 app/assests/ 下的资源文件压缩合并然后放到 public 下。不手动执行也没有问题。

production 环境下的问题我不太清楚了。

1.图片加载

# app/assets/images/1.jpg
<%= image_tag "1.jpg" %>
  1. rake precompile 的作用是对 assets 中的文件进行打包,添加指纹识别,方便 nginx,apache 这样的服务器去静态的 serve 在 config/environment/*.rb 中定义了: ruby # Disable Rails's static asset server (Apache or nginx will already do this) config.serve_static_assets = false 设置为 true 就可以直接 servepublic/assets中预编译好的资源文件 由于预编译只编译application.cssapplication.js和其他不是 js,css 后缀的文件 所以最好在 application.js 中如下引用 ruby //= require self //= require_tree . js 和 css 的预编译产生结果不同,js 如上引用后只产生一个 application.js,所有代码压缩在它里面 而 css 只是简单的@import所以仅仅像上述引用,编译后还是提示找不到,如下设置 ruby # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) config.assets.precompile += ['what_ever_you_want'] 添加上所有的 css 文件 在 production 环境中如上所述由于会压缩 js 文件所以有些 js 脚本压缩后 (不知道什么原因,大概是不够规范) 会报错,影响程序运行,所以尽量不要用中文吧
需要 登录 后方可回复, 如果你还没有账号请 注册新账号