我想使用jQuery刷新頁面上的部分內容,但是我無法獲得部分內容,因爲它需要的集合在jQuery代碼執行後不可用。當使用Jquery遠程刷新頁面元素時,如何讓集合/變量持久?
我在用戶控制器表演動作:
def show
@user = User.find(params[:id])
@title = "#{@user.first_name} #{@user.last_name}"
@posts = @user.posts.paginate(:page => params[:page], :per_page => 20)
@discussions = @user.discussions.paginate(:page => params[:page], :per_page => 2)
end
這使得集合@posts和@discussions可用的用戶展示頁面上傳遞給泛音如下,在show.html.erb:
<div id="synopsis">
<%= render :partial => 'users/post', :collection => @posts %>
</div>
<div class="pagination_links">
<%= will_paginate(@posts) %>
</div>
然而,讓我們說,我想更換顯示用戶展示頁面上給用戶的討論,即使用在表演動作可用@discussions的職位。爲此,我在用戶控制器中設置了一個名爲show_discussions的自定義操作,並使其路由起作用。這是行動:
def show_discussions
respond_to do |format|
format.js
end
end
此引用show_discussion.js.erb
$("#synopsis").html("<%= (escape_javascript("#{render(:partial => 'discussion_activity', :collection => @discussions)}")).html_safe %>");
此文件成功取代#synopsis,但沒有填充它 - 作爲集合@discussions通過不持續遠程調用此操作。我該如何解決這個問題,以便在遠程調用之後用戶討論可用?
更新:我使用js文件進行ajax請求。我指定獲取用戶行爲show_discussions一個按鈕被點擊時:
$(function() {
$('#show_discussions').live("click", function() {
$.get('/users/show_discussions');
});
$('#show_posts').live("click", function() {
$.get('/users/show_posts');
});
});
確定以加載
@discussions
,所以我想我可以保存用戶的ID在我的會議,然後後將其刪除。但是,還有其他更好的方法嗎?例如,當「show」被調用時,你可以從params [:id]中找到一個用戶。也許(如果我學會了如何,當然),我可以用這種方式?感謝您的幫助Jeff – jay看我的(相當短)編輯。你能發佈執行ajax請求的代碼嗎? –
我當前使用js文件在單擊div #show_discussions時發出請求。 – jay