2014-03-27 19 views
0

我想使用ajax更新我的頁面的特定部分,但js.erb文件似乎並沒有替換我的div中的內容。我也注意到,由於某種原因,當地人沒有被傳遞給我的部分。在我的控制器中,我有一個顯示操作來加載show.html.erb,當一個項目被點擊時,它發送一個ajax請求。這些項目位於一個id爲「stream-contents」的div中。該請求被髮送到我的控制器中名爲get_tree_folder的操作,並將響應格式化爲JS。 js.erb和部分文件與我的show.html.erb位於同一文件夾中。js.erb不刷新頁面導軌

這裏是我的控制器操作get_tree_foler:

def get_tree_folder 
    @file_view = false; 
    @curriculum = Curricula.find_by_id(params[:id]) 
    @git = get_bare_repo @curriculum 
    @branch = params[:branch] 
    tree = @git.gtree(params[:tree]) 
    @child_trees = tree.trees 
    @child_blobs = tree.blobs 

    respond_to do |format| 
    format.js 
    end 
end 

我js.erb文件get_tree_folder.js.erb:

$('#stream-contents').html(<%= escape_javascript(render :partial => 'tree', :locals => { branch: @branch, child_trees: @child_trees, child_blobs: @child_blobs, curriculum: @curriculum }) %>); 

的控制檯輸出:

Started GET "/curricula/5/master/a9d280e6a0eb41ab7ea012f10f516913b2e53061" for 127.0.0.1 at 2014-03-27 13:52:36 -0700 
Processing by CurriculaController#get_tree_folder as JS 
Parameters: {"id"=>"5", "branch"=>"master",  "tree"=>"a9d280e6a0eb41ab7ea012f10f516913b2e53061"} 
Curricula Load (0.3ms) SELECT `curriculas`.* FROM `curriculas` WHERE `curriculas`.`id` = 5 LIMIT 1 
Rendered curricula/_tree.html.erb (1.1ms) 
Rendered curricula/get_tree_folder.js.erb (2.9ms) 
Completed 200 OK in 17ms (Views: 5.9ms | ActiveRecord: 0.3ms | Solr: 0.0ms) 

任何意見將不勝感激。

回答

0

包住參數$('#stream-contents').html()引號:

$('#stream-contents').html("<%= escape_javascript(render :partial => 'tree', :locals => { branch: @branch, child_trees: @child_trees, child_blobs: @child_blobs, curriculum: @curriculum }) %>"); 
+0

爲什麼若部分被渲染或者不是你不能告訴?你可以在你的問題中添加你的部分'/ app/views /課程/ _tree.html.erb'嗎?日誌顯示部分呈現!在'locals'上,你可以檢查'local_assigns'散列,它應該包含所有傳入的'locals'。 – vee

+0

我其實已經明白了。在我的部分鏈接是<% link_to %>而不是<%= link_to%>。感謝您的幫助! – bammons