我试图在不使用菜单的任何分页宝石(就像模板)的情况下进行ajax分页。例如,在品牌菜单名称鼠标悬停时使用“menu_brand”渲染显示品牌菜单,因为当时页面加载时只从数据库中获取品牌。对于这个渲染视图,我必须做分页功能。我在控制台日志中成功获取当前页面内容。
在控制器中这样做
def menu_brand
$cnt=Brand.count
end
def menu_brand_page
$st=0
if !(params[:startingRow].nil?)
$st = params[:startingRow].to_i
end
$brands=Brand.limit(24).offset($st)
end
在_menu_brand.html.erb
<% if !($cnt.nil?) %>
<% @pg = ($cnt / 24).ceil %>
<div class="paginator">
<%
for j in 0..@pg %>
<%= link_to "#{j+1}", "javascript:GotoPage('#{j*24}')", %>
<% end
%>
</div>
<table width="700px"; align="center" id="menupage">
<%= render "menu_brand_page"%>
</table>
<% end %>
<script type="text/javascript">
function GotoPage(startrow) {
var theURL = '/menu_brand_page/'+<%= params[:deptid] %>
+'/' + startrow;
$.ajax({
url : theURL
});
}
</script>
在menu_brand.js.erb
中$('#bval').html('<%= escape_javascript render ('menu_brand') %>');
在_menu_brand_page.html.erb
<% $brands.each do |brand| %>
<%= brand.name %>
<% end %>
在menu_brand_page.js.erb
中$('#menupage').html('<%= escape_javascript render ('menu_brand_page') %>');
布局
<div id="bval">
<%= render "menu_brand" %>
</div>
<script type="text/javascript">
$(document).ready(function() {
var theBrand = '/menu_brand/' + <%= params[:deptid] %>;
$.ajax({
url : theBrand
});
});
</script>
我的router.rb
match "menu_brand_page/:deptid/:startingRow" => "product_details#menu_brand_page"
match "menu_brand/:deptid" => 'product_details#menu_brand'
控制台日志输出
$('#menupage')。html('\ n \ n \ nBC \ n&lt; / td&gt; \ n \ n \ nBC Footwear \ n&lt; / td&gt; \ n \ n \ nBCBG \ n&lt; / td&gt; ; \ n&lt; / tr&gt; \ n \ n \ n \ n \ nBCBGeneration \ n&lt; / td&gt; \ n \ n \ nBCBGMAXAZRIA \ n&lt; / td&gt; \ n \ n \ n \ nBCX \ n&lt; / td&gt; \ n&lt; / tr&gt; ; \ n \ n \ n \ n创作\ n&lt; / td&gt; \ n \ n \ nBeach Bunny \ n&lt; / td&gt; \ n \ n \ nBeach House \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n \ n \ n每个House Woman \ n&lt; / td&gt; \ n \ n \ nbebe \ n&lt; / td&gt; \ n \ n \ nBecca \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n \ n \ nBed Stu \ n&lt; / td&gt; \ n \ n \ nBellatrix \ n&lt; / td&gt; \ n \ n \ nBELLE由SIGERSON MORRISON \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n \ n \ n \ nBelle Du Jour \ n&lt; / td&gt; \ n \ n \ n贝尔诺尔\ n&lt; / td&gt; \ n \ n \ nBen Amun \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n \ n \ n \ nENCH \ n&lt ; / td&gt; \ n \ n \ nBerek \ n&lt; / td&gt; \ n \ n \ nBernardo \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n \ n \ nNENNIE OF NEW YORK \ n&lt; / td&gt; ; \ n \ n \ nBETMAR \ n&lt; / td&gt; \ n \ n \ nBetsey Johnson \ n&lt; / td&gt; \ n&lt; / tr&gt; \ n \ n');
请帮助我,不知道为什么menu_brand视图中的内容没有变化。
答案 0 :(得分:0)
谢谢@agncleod。 @agmcleod是对的。我在文档就绪函数中调用了render,并且我已经使用了很多全局变量。现在渲染鼠标悬停事件并使用实例变量。我纠正了这个错误。我已将所有全局($)变量更改为实例(@)变量。在布局中调用渲染函数,如下所述。
布局
<a href="#" id="menubrand">brands</a>
<div id="bval">
<%= render "menu_brand" %>
</div>
<script type="text/javascript">
$("a#menubrand").hover(function () {
var theBrand = '/menu_brand/' + <%= params[:deptid] %>;
$.ajax({
url : theBrand
});
},
function () {
});
</script>