使用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”。
我希望它不是双重渲染,而是用新结果重新加载现有部分。
有什么建议吗?
答案 0 :(得分:0)
您在第二部分中使用内部和外部字符串的单引号:
$("#album").html('<%= escape_javascript(render 'album_index') %>');
这导致html不是正确的字符串,这可能会导致您的问题。对于outter字符串使用双引号,如下所示
$("#album").html("<%= escape_javascript(render 'album_index') %>");