Rails - ajax页面部分更新

时间:2013-10-02 15:34:27

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3

我的home.html.haml页面呈现3个部分:

%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. 你如何在你的申请中处理这个问题?

1 个答案:

答案 0 :(得分:1)

  1. 是的,这是在Rails中执行此操作的正确方法
  2. 就处理而言,它将是相同的。无论从服务器上吐出什么都会在客户端浏览器上执行,并且元素会更新。使用服务器端,您可以更好地控制ERB。
  3. 就像你做的一样。
  4. 希望这会有所帮助