0

我正在尝试在不使用任何分页宝石的菜单(类似于模板)的情况下进行 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>

我的路由器.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</td>\n\n \nBC 鞋类\n</td>\n\n \nBCBG\n</td>\n </tr>\n\n\n \nBCBGeneration\n</td>\n\n \nBCBGMAXAZRIA\n</td>\n\n \nBCX\n</td>\n</tr>\n \n\n \n有创意\n</td>\n\n \n沙滩兔\n</td>\n\n \n沙滩屋\n</td>\n</tr>\n\n\ n \n海滨别墅女\n</td>\n\n \nbebe\n</td>\n\n \nBecca\n</td>\n</tr>\n\n\n \nBed Stu \n</td>\n\n \nBellatrix\n</td>\n\n \nBELLE BY SIGERSON MORRISON\n</td>\n</tr>\n\n\n \nBelle Du Jour\ n</td>\n\n \nBelle Noel\n</td>\n\n \nBen Amun\n</td>\n</tr>\n\n\n \nBENCH\n</td >\n\n \nBerek\n</td>\n\n \nBernardo\n</td>\n</tr>\n\n\n \n纽约伯尼\n</td>\n \n \nBETMAR\n</td>\n\n \n贝齐·约翰逊\n</td>\n</tr>\n\n');

请帮助我不明白为什么 menu_brand 视图中的内容没有改变。

4

1 回答 1

0

谢谢@agncleod。@agmcleod 是对的。我在文档就绪函数中调用渲染,并且我已经使用了很多全局变量。现在正在渲染鼠标悬停事件并使用实例变量。我纠正了这个错误。我已将所有全局 ($) 变量更改为实例 (@) 变量。在布局中调用渲染函数,如下所述。

在布局中

<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>
于 2012-09-20T05:59:43.567 回答