我跟着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') ) %>");
对我来说很好。希望这可以帮助别人。
由于
答案 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>