【问题标题】:Issue while rendering a view with in another partial view using ruby on rails 3使用 ruby​​ on rails 3 在另一个局部视图中渲染视图时出现问题
【发布时间】:2012-08-31 08:24:06
【问题描述】:

我正在尝试在不使用任何菜单分页宝石的情况下进行 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\n\n \nBC 鞋类\n\n\n \nBCBG\n\n\n\n\n \nBCBGeneration\n\n\n \nBCBGMAXAZRIA\n\n\n \nBCX\n\n\n\n\n \n要有创意\n\n\n \n沙滩兔\n\n\n \n沙滩屋\n\n\n \n\n \n海滨别墅女\n\n\n \nbebe\n\n\n \nBecca\n\n\n\n\n \nBed Stu\n\n\n \nBellatrix\n\n\n \nBELLE BY SIGERSON MORRISON\n\n\n\n\n \nBelle Du Jour\n\n\n \nBelle Noel\n\n\n \nBen Amun\n\n\n\n\n \nBENCH\n \n\n \nBerek\n\n\n \nBernardo\n\n\n\n\n \n纽约伯尼\n\n\n \nBETMAR\n\n\n \nBetsey Johnson\n\n\n\n');

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

【问题讨论】:

  • 没有直接答案,但我建议查看日志,看看是否提取了正确的数据。如果是这样,那么您的显示方式或将其放入视图的方式有问题。如果数据错误,那么您就知道这是您的查询。您似乎也经常使用 $ 变量。这些是全球性的。通常,如果您希望在视图中可以访问变量,则使用实例变量,例如@brands。不确定这是否是原因。

标签: ruby-on-rails-3 jquery pagination render


【解决方案1】:

谢谢@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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多