我按照本教程将 AJAX 添加到我的 Rails3.1 搜索框(一切正常)。这个搜索框在一个侧边栏中,我想在主列中显示结果。我遇到的问题是我不知道如何正确地做到这一点。
在 AJAX 之前,我有一个 search.html.haml,其中包含显示结果的代码。但是,如果我在此处添加渲染部分调用,则不会显示任何内容(我猜是因为 search.html.haml 没有被调用)
搜索.html.haml
=@events.count
#search=render 'search'
另一方面,如果我将渲染部分调用放在 application.html.haml 中。它确实显示了结果,但在主列的实际内容下方。
应用程序.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
搜索.js.erb
$('#search').html("<%= escape_javascript( render(:partial => 'search') ) %>");
我该怎么做才能摆脱主列(#central)上的内容并在那里显示结果?
固定的!!!!工作中!!!!(因为我必须等待几个小时才能发布答案,所以我在这里做)
我不确定这是正确的编码,但对我有用。我所做的是摆脱中间文件 search.html.haml(见上文)
现在的配置是这样的:
应用程序.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') ) %>");
这对我来说可以。希望这可以帮助其他人。
谢谢