2011-03-16 79 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