0
我有我的home.html.haml頁面渲染3個諧音:導軌 - AJAX頁面局部更新
%h1 Foo
#foo1
= render partial: 'foo/foo', locals: {items: @foo1_items}
#foo2
= render partial: 'foo/foo', locals: {items: @foo2_items}
#foo3
= render partial: 'foo/foo', locals: {items: @foo3_items}
目前,我有一個刷新這些部件分別發射一個AJAX調用到首頁的一些遠程鏈接:
= link_to 'refresh', home_path(mode: 'foo1'), remote:true
= link_to 'refresh', home_path(mode: 'foo2'), remote:true
= link_to 'refresh', home_path(mode: 'foo3'), remote:true
,我有一個home.js.erb包含這樣的事情:
<% if params[:mode] == 'foo1'%>
$('#foo1').html('<%= j(render partial: 'foo/foo', locals: {items: @foo1_items}) %>')
<% elsif params[:mode] == 'foo2'%>
$('#foo2').html('<%= j(render partial: 'foo/foo', locals: {items: @foo2_items}) %>')
<% else %>
$('#foo3').html('<%= j(render partial: 'foo/foo', locals: {items: @foo3_items}) %>')
<% end %>
我想知道:
- 如果這是默認(建議,最好的)Rails的方式做部分頁面刷新或一般處理Ajax請求的方式嗎?
- 如果服務器用純html做出響應並讓客戶端(javascript)做更換會更快?
- 你如何在你的應用程序中處理這個問題?
應當指出的是,這種方式有點浪費帶寬,因爲有很多從服務器發送的數據冗餘的(每次更新將大致相同的標記用小的變化)。還有其他方式可以通過向客戶端發送較小的數據表示(例如JSON)並讓客戶端解釋它並填充標記來實現此目的。 – Slicedpan
謝謝你的回答。我會等待任何人爭辯,然後我會將你的答案標記爲正確的;) –
我同意@Slicedpan。你絕對可以使用一些客戶端模板系統,如把手。 – jvnill