新手问题 rails 中只对一个页面有效的 js 一般写在哪里?

victorjames · 发布于 2012年07月04日 · 最后由 Fighting_3 回复于 2017年05月17日 · 9660 次阅读
96

比如说users下面的show.html.erb,加载这个show页面的时候执行一段js,把这段js放到show页面里可以,但是不想和js和html都混到一个页面里边去,能不能放到assets下面,而且又只对show页面其左右?

共收到 6 条回复
188

可以是可以,但从缓存的角度出发,其实还是推荐通过asset pipeline一股脑儿一起加载。

717

@victorjames

使用content_for以及yield,可以参照ruby-china,全站的stylesheet以及js都是这么组织的。

2687

楼上说的都对。

如果一定要对一个页面有效,建议看一下using-nested-layouts相关资料 http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts

De6df3

我是喜欢给每个 controller 定一个 base 模板,所有的 action 都调用它。里面就可以写针对 controller 级公共的代码,比如 css,js 引用,二级菜单,面包屑... 当时还给 Rails 提过 pull request 让 scaffold 生成 view 的时候多生成个 _base.html.erb 的文件,结果被拒,原因是,这是个别的需求

96

我在学习rails,用的是 5.0版本,也是刚刚解决这个问题。在assets目录下,找到,application.js和application.css两个文件,把里面的require_tree删除。然后把你需要引用的js或css在config/initialize/assets.rb文件中注册下,如Rails.application.config.assets.precompile += %w(index.css),最后在html页面中使用 <%=stylesheet_link_tag "index" %>即可引用该css样式了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册