3 つのパーシャルをレンダリングする home.html.haml ページがあります。
%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)に置き換えさせた方が速いとしたら?
- アプリケーションでこれをどのように処理しますか?