2013-03-23 84 views
0

我在查找解決方案時遇到了一些問題。基本上,我有一個嵌入式ruby每個循環,其主體是部分呈現模型的某個子組。例如:刷新HTML內容,由嵌入式Ruby提供,無需重新加載頁面

<li id="thing"> 
    <% items.each do |i| %> 
    <%= render :partial => 'item', :locals => {:i => i} %> 
    <% end %> 
</li> 

我在想,如果有使用jQuery,AJAX的方式,甚至只是軌(我敢肯定,每個人都有對我來說是可實現的解決方案,我很感興趣的是他們)刷新該項目的列表。我希望能夠做到這一點的原因是,目前,我已經實現了功能,以允許創建現在的「項目」或再次更新現有的「項目」,而不必重新加載頁面(表單在兩種情況下,按鈕點擊都會出現在某個容器中),我希望在提交列表時自動更新新信息或新「項目」。嘗試刷新整個列表會是更好的方法嗎?或者是否有辦法將新創建/更新的對象附加到部分(作爲部分)客戶端列表?

我試過以下語句,但我似乎無法避免在渲染時出現「未定義的方法」錯誤。

$("#activeTab").append("<%= escape_javascript(render :partial => 'item', :locals => {:i => Item.order(:created_at).last}) %>");

我想這會是一個很好的解決方案,因爲一旦網頁被導航程,回來,名單將需要重新加載。這只是添加到靜態列表,而你仍然在頁面上。

+0

你能包括大致什麼的HTML Ruby代碼會導致同樣,該列表,表單和表單處理邏輯都在同一頁面上? – 2013-03-23 02:27:15

+0

該視圖具有與此視圖適用的模型關聯的對象列表,所以我從另一個模型中抓取該部分項。部分內容包括上傳的照片或視頻,一些指標等,因此沒有太複雜的內容。當單擊適當的按鈕時,表單會替換集裝箱暫時列出清單,並在提交後再次顯示清單。我只是在click事件處理程序中使用jQuery .show()和.hide()方法。表單是一個rails表單,所以我使用語法form_for ...這是否提供了一個更好的主意?感謝您抽出時間:) – 2013-03-23 02:34:33

+0

我很抱歉,但現在是3:45,所以仍然沒有足夠的信息讓我的大腦能夠充分了解情況。就我所見,我們在瀏覽器中有一個html頁面,並且有一個服務器能夠吐出html並對ajax請求作出反應。對不起,也許我知道太少(沒有真正的)關於Ruby的幫助。 – 2013-03-23 02:46:29

回答

0

抓住你用來提交這個新項目(我稱之爲submit_button)並使用jquery重新加載頁面。

$( '#submit_button')點擊(函數(){

  location.reload(); 

}); 

加入的form_for:?遠程=>真

+0

我會重新加載立即包裹每個循環的div? – 2013-03-23 20:14:29

+0

我最近的評論措辭不佳:我會做類似於:'$(#thing).reload();'? – 2013-03-23 22:50:58

+0

嘿所以這種方法有一個未被捕獲的TypeError。它表示該對象沒有方法重新加載。我應該爲reload()方法查看哪些文檔? – 2013-03-24 17:52:08

相關問題