无法重新加载部分内容

时间:2011-11-20 06:58:09

标签: ruby-on-rails ruby jquery ruby-on-rails-3.1

使用rails 3.1,jquery v1.6.4,jquery-ujs

我试图重新加载部分但它似乎没有按预期工作:

<div id="album"> <%= render 'album_index' %></div>

<%=link_to 'Show All Albums', albums_path(:filter_by => 'all'), :remote => true%><br>
<%=link_to 'Show Old Albums', albums_path(:filter_by => 'old'), :remote => true%><br>

index.js.erb的

$("#album").html('<%= escape_javascript(render 'album_index') %>');

当用户首次加载'index'时,&lt;%= render'alite_index'%&gt;将返回正确渲染我的相册模型中的所有行都是默认值。当用户点击“显示旧相册”链接时,jquery操作将加载“album_index”,将在我的控制器中根据参数[:filter_by] ==“old”运行特定查询并返回正确的结果传回视野。

现在的问题是,当我点击加载“旧”过滤器的链接时,它不会重新加载现有的渲染,但是双重渲染它。所以我的视图包括渲染'album_index',其结果来自param [:filter_by] ==“all”,低于'album_index'再次呈现,但结果来自param [:filter_by] ==“old”。

我希望它不是双重渲染,而是用新结果重新加载现有部分。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您在第二部分中使用内部和外部字符串的单引号:

$("#album").html('<%= escape_javascript(render 'album_index') %>');

这导致html不是正确的字符串,这可能会导致您的问题。对于outter字符串使用双引号,如下所示

$("#album").html("<%= escape_javascript(render 'album_index') %>");