我們的應用程序中的許多Rails視圖通過AJAX填充自己,並且它們的數據的第一個渲染來自在jquery的$(document.ready)
事件上運行的JavaScript調用。我們感興趣的視圖基本上顯示了表格數據的列表(例如收件箱,搜索結果列表等)。以幹線方式預渲染AJAX填充視圖
我們希望預渲染結果的第一頁而不必進行AJAX調用,但我們希望能夠在不重新加載整個頁面的情況下重新填充視圖。這並不困難,但它似乎需要在應用程序的不同部分編寫單獨的代碼片段來執行相同的操作:一次在視圖中繪製初始數據集(從最初的render
調用開始),再一次在Javascript來繪製新的數據集(動態清除舊的DOM並用新的HTML替換它)。
當前JavaScript克隆一個隱藏的模板元素(通常爲div
),設置每個字段的值並將新元素添加到DOM。這很好,但如果我們想在渲染前預先填充視圖,我們必須在rubyfied ERB塊中寫入模板對象的另一個副本(例如@messages.each do |m|
)。如果模板已更改,則必須更改ERB塊中的代碼以匹配-不是非常乾的。
有沒有更好的方法?如果是這樣,那是什麼?
感謝
湯姆
我很抱歉,但那不是我的問題。我正在尋找答案,導致最初的請求返回HTML與預先填充的數據,使用相同的模板,使用JavaScript。 –
然後,共享部分,即初始請求和AJAX調用都使用。 '$('#mydiv')。html('<%= escape_javascript(render:mypartial,locals:{foo:@myvar})%>');' 您的初始調用可以將局部視圖渲染爲視圖的一部分,然後您的AJAX調用可以渲染像上面的.js.erb一樣更新它。 – Ron
發佈作爲答案,我會將其標記爲:-) –