使用AJAX搜索工作,很好!如何正确显示结果?

时间:2012-04-20 13:31:20

标签: ruby-on-rails ajax search ruby-on-rails-3.1

我跟着this tutorial将AJAX添加到我的Rails3.1搜索框中(一切正常)。这个搜索框位于侧栏中,我想在主列中显示结果。我遇到的问题是我不知道如何正确。

在AJAX之前,我有一个带有代码的search.html.haml来显示结果。但是,如果我在这里添加渲染部分调用,则不会显示任何内容(我猜是因为没有调用search.html.haml)

search.html.haml

=@events.count
#search=render 'search'

另一方面,如果我将render partial调用放在application.html.haml中。它确实显示结果,但显示在主列的实际内容之下。

application.html.haml

     #central
        %p#notice= notice
        = yield
        #search=render 'search'

我想这是一个简单的修复,但不知道该怎么做。

提前致谢!!!

_search.html.haml

 -@events.each do |event|
   #user_block
     #user_block_pic
      = image_tag(event.pic.url(:medium), class: 'event_block_image', :alt =>'Event Picture')
      ....more stuff

search.js.erb

  $('#search').html("<%= escape_javascript( render(:partial => 'search') ) %>");

如何摆脱主列(#central)上的内容并在那里显示结果?

固定!!!!工作中!!!! (因为我必须等待数小时才能发布答案,我在这里做了)

我不确定这是正确的编码,但对我有用。我所做的是摆脱中间文件search.html.haml(见上文)

现在配置如下:

application.html.haml

   #central
        %p#notice= notice
        = yield

_search.html.haml

#search
 =@events.count
 -@events.each do |event|
   ...stuff

资产/ JavaScript的/ search.js

 $(function(){ 
$("#search .pagination a").live("click", function(){   #this is for pagination
    $.getScript(this.href);
    return false;
});
$('#events_search').submit(function () {  #this is for the search form
    $.get(this.action, $(this).serialize(), null, 'script');
    return false;
  });
 });

视图/活动/ search.js.erb

  $('#central').html("<%= escape_javascript( render(:partial => 'search') ) %>");

对我来说很好。希望这可以帮助别人。

由于

1 个答案:

答案 0 :(得分:0)

当你从ajax调用中调用方法时,它想要渲染search.js.erb或haml我猜,但我不使用haml,只使用erb。

然后你创建了一个search.js.erb,这是我search.js.erb的一个例子:

$("#user-browser").replaceWith("<%= escape_javascript render(:partial => 'list') %>");
$("#tabs-interval").replaceWith("<%= escape_javascript render(:partial => 'tabs-interval') %>");

所以我所有的erb都是使用jquery来找到我要更新html的div,使用渲染的partials并替换它们中的html。

我的部分看起来像是在erb:

档案:list.html.erb

<div id="user-browser">
  <span>more html stuff</span>
</div>

档案:tabs-interval.html.erb

<div id="tabs-interval">
  <span>more html stuff</span>
</div>