我正在尝试使用 ajax 为我的 rails 项目添加效果。我的页面上有 4 个 div:
<div header></div>
<div menu></div>
<div content></div>
<div footer></div>
单击菜单 div 中的链接时,页脚应该向上滑动,新的页面文本应该出现在内容 div 中。当我的公用文件夹中的所有文件都在 rails 项目中时,该代码工作正常,但是当我将文件放在 View 文件夹中时,它不起作用。知道为什么吗?
我的 assets/javascripts 文件夹中有一个 scripts.js 文件。代码是:
var ajax_loaded = (function(response) {
$("#content").slideUp(
"fast",
function() {
$("#content")
.html(response)
.slideDown("fast");
$("#content .ajax").on("click",ajax_load);
$("#content form").on("submit",form_submit);
});
});
var form_submit = (function(e) {
e.preventDefault();
var url = $(this).attr("action");
var method = $(this).attr("method");
var data = {}
$(this).find("input, textarea").each(function(i){
var name = $(this).attr("name");
var value = $(this).val();
data[name] =value;
});
$.ajax({
"url": url,
"type": method,
"data": data,
"success": function () {
history.pop();
$(history.pop()).trigger("click");
},
"error": function () {alert("bad");}
});
});
var history = [];
var current_url_method;
var ajax_load = (function(e) {
e.preventDefault();
history.push(this);
var url =$(this).attr("href");
var method = $(this).attr("data-method");
if (current_url_method != url + method) {
current_url_method = url + method;
$.ajax({
"url": url,
"type": method,
"success": ajax_loaded,
});
}
});
$("#menu a").on("click",ajax_load);
$("#menu a.main").trigger("click");
我的资产/样式表文件夹中有一个 style.css.scss。代码是:
#header {
background: #333333;
height:50px;
}
#menu {
background: #ffffff;
}
#content { background: #eeeeee;height:100px;}
#footer {
background: #333333;
color: #ffffff;
height: 100px;
}
在我的路线文件夹中,我有:
Books::Application.routes.draw do
get "about_us", :to => "static_pages#about_us"
get "contact_us", :to => "static_pages#contact_us"
get "invite_us", :to => "static_pages#invite"
get "faq", :to => "static_pages#faq"
root :to => 'books#index'
Books 控制器中的索引方法是:
def index
render :layout => "application"
end
在我的视图/布局中,在 application.html.erb 中,我有(这与我的公用文件夹有所不同,其中链接的形式为<a href = "/about.html" class = "main">About Us</a>)
:
<!DOCTYPE html>
<html>
<head>
<title>Books</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<div id = "header">My header</div>
<div id = "menu">
<%= link_to "About Us",about_us_path,:class => "main" %>
<%= link_to "FAQ", faq_path, :class => "main" %>
<%= link_to "Invite Others", invite_us_path, :class => "main" %>
<%= link_to "Contact Us", contact_us_path, :class => "main" %>
</div>
<div id = "content">
<%= yield %>
</div>
<div id = "footer">My footer</div>
<script src = "http://code.jquery.com/jquery-1.9.1.min.js">
</script>
</body>
</html>
无论如何,如果您对出了什么问题有任何想法,我将不胜感激,谢谢。就像我说的,它在公共文件夹中工作,所以我认为我的 scripts.js 没问题。可能与 ':class => "main" ' 部分有关吗?