2012-11-25 43 views
0

尋找實現此目的的最佳方式。目前我有一個「顯示」用戶頁面 - 顯示所有用戶的圖片。Rails - 直接鏈接到通過ajax呈現的視圖的能力

def show 
    @user = User.find(params[:id]) 
    @pictrues = @user.pictures 
end 

在該頁面上,我有各種選項卡。當用戶點擊其中一個選項卡時,ajax調用將呈現一個視圖...特別是,它會更新先前顯示所有用戶圖片的部分(以及用於統計的附加部分)。對於「節目的意見」的例子,它更新了部分與所有圖片的用戶發表了評論:

def show_comments 
    @user = User.find(params[:id]) 
    @pictures = @user.picture_comments.map{ |p| p.picture }.uniq 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

的show_comments.js.erb文件看起來像:

$("#user_content_container").html("<%= escape_javascript render(partial: 'shared/pictures', pictures: @pictures) %>"); 
$("div.user_header").html("<h4>Comments</h4><br/>"); 
$("#stat_container").html("<%= escape_javascript render(partial: 'shared/comment_stats', pictures: @pictures) %>"); 

我想要什麼要做的,就是保持頁面的當前功能。但也能夠直接鏈接到通過ajax呈現的視圖。例如,在另一個頁面上直接鏈接到用戶「顯示」頁面的鏈接,與單擊「評論」選項卡時的鏈接。

我有一些想法,但不知道這樣做的「最乾淨」的方式是什麼。讓我知道如果你需要任何額外的澄清,B/C我老實說,這個問題的困難時間,因爲我在找到實現這個最好的方法!

回答

0

這聽起來像是你可能使用turbolinks解決的問題。如果您可以更新您的應用程序以使用Rails 4,則可以將其捆綁在其中。否則,您可以使用該寶石。有關如何操作的更多信息,請觀看railscast on turbolinks

如果你不想或不能使用它們,你也可以嘗試在url中傳遞params,並在頁面加載時檢查它們。您可以使用參數修改頁面,其方式與在AJAX調用後修改頁面的方式相同。