Jquery根据rails的调用追加或替换



我一直在关注几个railcast,目前使用will_paginate有一个无止尽页面的产品列表。我想实现railscast #240,在结果中添加实时搜索,但是似乎有一些逻辑冲突,我不确定如何纠正。

简单来说,index.js.erb内的无尽页面需要使用append在当前产品列表下面添加更多的产品:

$("#产品")。添加 (' & lt; % = j渲染(@products) %> ');

然而,实时搜索实现需要将当前产品列表替换为搜索结果中的新产品:

$("#产品")。 html (' & lt; % = j渲染(@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调用?

想好了,以防别人碰到。对于大多数有经验的rails人员来说,这可能是显而易见的,但作为一个新手,这对我来说是一个全新的概念。

我将搜索结果重构到另一个控制器和视图中,这允许我使用单独的js。当products控制器处理滚动的无止尽页面时,使用Erb文件替换#products的内容。

现在我有views>products>index.js。动词使用$('#products')。add and views>results>index.js。Erb for $('#products').html etc

我还必须创建results_controller。在我的路由文件中添加Rb索引操作和结果资源。

之后两者同时工作

相关内容

  • 没有找到相关文章

最新更新