2011-03-16 80 views
4

我有,看起来像一个简单的搜索页面:的Rails 3 - 渲染部分js.erb

应用程序/视图/搜索/ index.html.erb

<%= form_for @search, :as => :search, :remote => true, :url => {:action => "query"}, :html => {:id => 'search-form'} do |f| %> 
    ... 
<% end % 

<div id="search-results"></div> 

*应用程序/控制器/search_controller.rb*

def index 
    @search = SearchCriteria.new 
end 

def query 
    @search = SearchCriteria.new(params[:search]) 

     # otherwise, perform search... 
    @summaries = do_search @search 
    respond_to do |format| 
    format.js 
    end 
end 

然后我有一个js.erb模板: *应用程序/视图/搜索/ _query.js.erb *

$('#search-results').update("<%= escape_javascript(render(@summaries)) %>"); 

但是,我没有看到任何东西被放入'搜索结果'div。我是否需要某种模板才能呈现“@summaries”?如果是这样,它会被命名,我将它放在哪里(即应用程序/视图/搜索?)(我正在使用jQuery和rails 3)

谢谢。

+1

我不认为jQuery有一个'.update'方法。试试'.html'? Firebug会在控制台中抛出任何错误吗? – Dogbert 2011-03-16 12:52:01

+0

我切换到.html,没有区别。什么是“渲染(@summaries)”将呈现?我在猜测我错过了一个观点或部分观点。 – codecraig 2011-03-16 12:55:10

回答

10

您应该重命名模板文件:

app/views/search/_query.js.erb => *app/views/search/query.js.erb 

下划线是不必要的

+1

是的,这有帮助。然后我更新了query.js.erb来执行此操作: $('#search-results')。html(“<%= escape_javascript(render(:partial =>'summaries'))%>”); 然后我创建了一个app/views/search/_summaries.html.erb – codecraig 2011-03-16 12:58:12

+0

嗨,我想知道这是什么意思:“rails可以在erb文件中渲染js”?这是否意味着“ujs”? – why 2013-01-29 13:10:43