1
我有一個部分擁有一個容納一堆項目的容器。如果我通過ajax添加一個項目,我想反映在這個容器中而不刷新頁面。我有一個問題找到一個jquery/ajax的方式來刷新頁面上的一個部分。我確信有一個簡單的方法,我只是想念它。用jquery刷新Rails 3中的Ajax部分
我有一個部分擁有一個容納一堆項目的容器。如果我通過ajax添加一個項目,我想反映在這個容器中而不刷新頁面。我有一個問題找到一個jquery/ajax的方式來刷新頁面上的一個部分。我確信有一個簡單的方法,我只是想念它。用jquery刷新Rails 3中的Ajax部分
.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.
這將調用服務器並刷新部分? – Red
不,當你通過ajax調用你的動作時,控制器會觸發這個動作,然後把'respond_to do | format |格式:js結束# –
我遇到了一個問題讓它運行。我收到錯誤:javascript.js:1錯誤:NoMethodError:未定義的方法'渲染'爲#<#:0x007fed78e3d7e0> (in ****) –
Red