【发布时间】:2016-06-04 20:37:04
【问题描述】:
我的项目有两个页面,每个页面都有不同的 javascript 和 CSS。我也是 ruby on rails 的新手,我有点了解资产管道,但并不完全了解。到目前为止,我尝试过的有几件事没有奏效。
首先是在它自己的文件中创建 javascript,然后在我希望加载该 javascript 的 .html.erb 文件中创建 <head> 标记之间的 javascript 链接标记。除此之外,我在 production.rb 文件中预编译了它们。这不起作用,似乎它们仍然在两个 javascript 文件之间重叠。
我尝试的下一个解决方案是实现jquery-readyselector plugin。这涉及在 application.html.erb 中的 body 上创建一个类,如下所示
<body class="<%= controller_name %> <%= action_name %>">
<%= yield %>
</body>`
然后,您将在 application.js 中包含准备好的选择器,最后将您的 javascript 范围限定为该 javascript/coffeescript 文件中的页面。
// app/assets/javascripts/alert.js.coffee
$(".pages.contact").ready ->
alert "My example alert box."
这个解决方案也不起作用。我不知道我做错了什么,这可能是我忽略的一些简单的事情,因为我是一个 Rails 菜鸟。我想知道是否有人可以就另一种方法给我一些指导,以允许在我的 ruby on rails 项目中使用特定于页面的 javascript 和 CSS。
在我的应用程序下面。{js|css} 文件
application.js
//= require jquery
//= require jquery_ujs
//= require moment
//= require bootstrap-datetimepicker
//= require template
//= require form
application.css
*= require_self
*= require bootstrap-datetimepicker
*= require template
*= requre form
*= require_tree .
【问题讨论】:
-
ready不是元素级事件。怀疑你的 2 个页面构成了大量的 js,并怀疑你在想这个 -
@charlieftl 这绝对不是大量的 JS,你建议我怎么做?在 page.html.erb 文件中包含
-
我不是 Rails 开发人员,但我只是建议您可能只需要一个 js 文件,除非您希望网站在未来大幅增长。好处是一旦加载一次,它将进入浏览器缓存以转到其他页面,从而减少下载时间
标签: javascript css ruby-on-rails