2012-12-30 89 views
1

我有一個部分擁有一個容納一堆項目的容器。如果我通過ajax添加一個項目,我想反映在這個容器中而不刷新頁面。我有一個問題找到一個jquery/ajax的方式來刷新頁面上的一個部分。我確信有一個簡單的方法,我只是想念它。用jquery刷新Rails 3中的Ajax部分

回答

3

.js.erb

$('#container_id').html('<%= escape_javascript(render(:partial => "partial", :formats => [:html])) %>'); 

完整的示例:

# CommentsController 

def refresh_comments 
    @comments = Comment.last_in(10.second) # fetch collection 
    respond_to do |format| 
    format.html { } # by default renders views/comments/refresh_comments.html.erb as template 
    format.js { } # by default renders views/comments/refresh_comments.js.erb as template 
    end 
end 

# views/comments/refresh_comments.js.erb 

$('#post_comments').html('<%= escape_javascript(render(:partial => "comments_thread", :formats => [:html])) %>'); 

# * where: "post_comments" - is a DOM id of container. 
#   "comments_thread" - name of partial. :formats => [:html] says that you render _comments.html.erb 

# Look JQuery API for details. 
+0

這將調用服務器並刷新部分? – Red

+1

不,當你通過ajax調用你的動作時,控制器會觸發這個動作,然後把'respond_to do | format |格式:js結束# –

+0

我遇到了一個問題讓它運行。我收到錯誤:javascript.js:1錯誤:NoMethodError:未定義的方法'渲染'爲#<#:0x007fed78e3d7e0> (in ****) – Red