2012-03-08 56 views
0

我創建了一個頁面,其中一些部分是渲染的佈局文件。不過,我想用JavaScript代碼再次渲染這些渲染部分中的一個。使用javascript渲染html.erb中的柵欄

我想使這些部分再次

<div id="dialog" title="Bookmark Folders" style="resize: both;"> 
     <%=render "layouts/filetree.html.erb"%> 
</div> 

它渲染功能創建此:

<div id="accordion"> 
    <% @user.folders.each do |f| %> <h3 id="<%= f.folder_name%>" class="folderBar"><a href="#" class="folderName"><b id="folderName"><%= f.folder_name%></b> created <%=distance_of_time_in_words(f.created_at, Time.now)%> before</a></h3> 
    <div class="<%= f.folder_name.delete(" ")%>"> 
     <%if f.docs.empty?%> 
     <b>-No document currently!-</b> 
     <%else%> 
     <% f.docs.each do |r|%> 
     <a href="<%=r.url%>" style = "color:#0066CC;"><%= r.title%></a><br/> 
     <b><%=r.url%></b><br /> 
     <%= r.snippet%><hr/> 
     <%end%> 
     <%end%> 
    </div> 
    <%end%> 
</div> 

因爲一些執行後,有超過「文件夾」了一些變化,我想使這部分再次看到更新。

回答

0

而不是呈現我做了AJAX的方式,並在頁面上更新它。感謝您的答案,但我沒有使用任何這些。

0

你不應該試圖渲染與JavaScript的erb - 它不是這樣做的(更不用說你必須自己寫一個erb解析器,並最終調用服務器的數據)。

如果在另一方面,你問如何問題使用Javasript渲染一些模板然後替換舊的內容與當時的新...

關注此http://railscasts.com/episodes/205-unobtrusive-javascript, 閱讀本Rails 3 and RJS瞭解如何通過javascript觸發一些內容更新。

總體思路是

  1. 渲染初始完整頁面
  2. 觸發AJAX調用(或者經過一段時間後或手動用戶請求)做的請求Rails應用程序
  3. 處理該請求,並使用javascript腳本做出迴應(腳本內容應包含所有功能和內容以取代所需內容)
+0

但我想這個例子假設有提交頁面後重新加載,但我不想重新加載頁面 – erogol 2012-03-08 16:40:11

+0

不,不需要關聯頁面。在服務器端做一個ajax調用,渲染你需要的模板併發送它作爲對該調用的響應。然後用渲染的內容替換舊內容。輕鬆鬆鬆。 – WTK 2012-03-09 07:04:42

0

可以在服務器和客戶端。一個允許這個的庫被稱爲mustache

但是,如果這是唯一的情況下你需要它,我也會採用RJS方法。