2013-04-16 172 views
0

我一直在关注几个railscasts,目前有一个使用will_paginate的无尽页面的产品列表。我想要实现railscast#240以将实时搜索添加到结果中,但似乎存在一些逻辑冲突,我不知道如何纠正。jQuery的追加或替换基于来自铁路的呼叫?

简单来说,内部index.js.erb的无尽的页面需要添加使用附加产品的现有名单如下产品:

$(“#产品”)。 append('<%= j render(@products)%>');

然而,生活搜索的实现需要更换的产品,从搜索结果新产品的现有名单:

$(“#产品”)。 html('<%= j render(@products)%>');

下面是完整的块:

$('#products').html('<%= j render(@products) %>'); // live search 
    $('#products').append('<%= j render(@products) %>'); // endless page 
    <% if @products.next_page %> 
     $('.pagination').replaceWith('<%= j will_paginate(@products) %>'); 
    <% else %> 
     $('.pagination').remove(); 
    <% end %> 

了HTML()和append()为各自的使用很好地工作,如果我评论一出其他作品,但如果我不发表评论一个它变得非常不可靠。

如何设置它,所以如果用户在搜索框中键入它会触发html(),并且如果用户正在滚动触发器append()?有什么方法可以确定哪个事件触发了index.js.erb调用?

回答

0

如果它曾经为其他人出现过,请将其计算出来。对于大多数经验丰富的导轨人员来说可能很明显,但作为新手,这对我来说是一个全新的概念。

我将搜索结果重构为另一个控制器和视图,让我使用单独的js.erb文件替换#products的内容,同时产品控制器处理滚动无尽页面。

所以,现在我有views(产品)index.js.erb使用$('#products')。append and views> results> index.js.erb for $('#products')。html等

我还必须创建results_controller.rb索引操作以及结果资源到我的路由文件。

之后,两者同时工作。