0

我的 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. 你如何在你的应用程序中处理这个?
4

1 回答 1

1
  1. 是的,这是在 Rails 中正确的做法
  2. 就处理而言,这将是同样的事情。从服务器吐出的任何内容都会在客户端浏览器上执行,并且元素会得到更新。在服务器端,您可以更好地控制 ERB。
  3. 和你做的一样。

希望这会有所帮助

于 2013-10-02T15:49:18.417 回答