0

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 %>

不思議なんだけど:

  1. これが、部分的なページの更新を行うためのデフォルトの(推奨される、最良の)Railsの方法なのか、それとも一般的にajaxリクエストを処理する方法なのか?
  2. サーバーに純粋なhtmlで応答させ、クライアント(javascript)に置き換えさせた方が速いとしたら?
  3. アプリケーションでこれをどのように処理しますか?
4

1 に答える 1

1
  1. はい、それはRailsでそれを行う正しい方法です
  2. 処理に関する限り、同じことになります。サーバーから吐き出されたものはすべて、クライアントのブラウザーで実行され、要素が更新されます。サーバー側では、ERB をより細かく制御できます。
  3. あなたがそれをしたのと同じ方法です。

これが役立つことを願っています

于 2013-10-02T15:49:18.417 に答える