我对 RoR 和 jQuery 相当陌生。目前,我有一个可用的 RoR 站点作为学习平台。我想包含一些 jQuery 基本功能来扩展我的学习(.mouseenter()、.hover()、.fadeIn() 等)。
让我用一些代码来设置场景(我已经剪掉了一些部分以保持简短):
$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
$ rails -v
Rails 3.2.8
宝石文件:
gem 'jquery-rails'
配置/路由.rb:
root to: 'static_pages#home'
应用程序/控制器/static_pages_controller.rb:
def home
@Presents = Present.all.reverse.take(20)
end
应用程序/视图/布局/application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title>List</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<div class="container-narrow">
<%= render 'layouts/header' %>
<%= yield %>
</div>
</body>
</html>
应用程序/资产/javascripts/application.js:
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
应用程序/views/static_pages/home.html.erb:
<div class="jumbotron">
<h1>Heading</h1>
</div>
<%= render 'shared/list' %>
应用程序/视图/共享/_list.html.erb:
<% if @Presents.any? %>
<%= render partial: 'shared/list_item', collection: @Presents %>
<% end %>
应用程序/视图/共享/_list_item.html.erb:
<div id="present">
<ul id="<%= list_item.id %>">
<span class="content">
Some content here
</span>
</div>
理想情况下,我希望我的 jQuery 能够影响<div>
with id="present"
。这是我的测试 jQuery:
$(document).ready(function(){
$('#present').mouseenter(function(){
$(this).fadeIn('fast',1);
}
$('#present').mouseleave(function(){
$(this).fadeIn('fast',0.5);
}
});
目前,我已经存储了上述app/views/static_pages/home.js.erb
内容,没有任何反应。这是一个合适的位置吗?或者我应该把它转移到app/views/shared/
目录?
从我呈现的网站页面 - 有没有办法检查我的 jQuery 是否被包含和执行?我觉得我当前的阻塞点是我 home.js.erb 的位置。
编辑:在我的 jQuery 中检测到错误 - 更正如下:
jQuery:
$(document).ready(function(){
$('#present').mouseenter(function(){
$(this).fadeTo('fast',1);
});
$('#present').mouseleave(function(){
$(this).fadeTo('fast',0.5);
});
});
并正确使用fadeTo
. fadeIn
正如我尝试的那样,不接受关于不透明度的第二个论点。