问题描述
|
一种推荐的做法是在应用程序布局的末尾加载jQuery:
= yield
= render \'shared/footer\'
= javascript_include_tag \'jquery\'
因此页面呈现速度更快,且没有Javascript或jQuery的障碍。但是,如果每个视图都需要做一些特殊的事情怎么办?例如,index
视图需要执行某些操作,show
视图需要执行其他操作,因此Javascript代码要么位于这些视图模板中,要么包含在这些视图模板中,但此时,jquery.js
文件已还没有加载(直到页面末尾)? jquery.js
可以在yield
之前加载,但是它位于页面的前面。
解决方法
您可以使用content_for
在布局中
yield
render \'footer\'
javascript_include_tag \'jquery\'
yield :custom_javascript
在视图中
<%= content_for :custom_javascript do %>
<script type=\"text/javascript\">alert(jQuery)</script>
<% end %
http://guides.rubyonrails.org/layouts_and_rendering.html#using-content_for
,丰山是对的另外请记住,在使用jQuery时请检查您的dom是否已加载。
因此,将其包装为:
$(function(){
// your js code here
});