【发布时间】:2013-01-17 02:33:25
【问题描述】:
我对 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'
config/routes.rb:
root to: 'static_pages#home'
app/controllers/static_pages_controller.rb:
def home
@Presents = Present.all.reverse.take(20)
end
app/views/layouts/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>
app/assets/javascripts/application.js:
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
app/views/static_pages/home.html.erb:
<div class="jumbotron">
<h1>Heading</h1>
</div>
<%= render 'shared/list' %>
app/views/shared/_list.html.erb:
<% if @Presents.any? %>
<%= render partial: 'shared/list_item', collection: @Presents %>
<% end %>
app/views/shared/_list_item.html.erb:
<div id="present">
<ul id="<%= list_item.id %>">
<span class="content">
Some content here
</span>
</div>
理想情况下,我希望我的 jQuery 使用 id="present" 来影响 <div>。这是我的测试 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 不接受第二个关于不透明度的参数,因为我正在尝试。
【问题讨论】:
标签: jquery ruby-on-rails