【问题标题】:Rails - ajax page partial updateRails - ajax 页面部分更新
【发布时间】:2013-10-02 15:34:27
【问题描述】:

我的 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. 您如何在应用程序中处理此问题?

【问题讨论】:

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


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

    希望这会有所帮助

    【讨论】:

    • 需要注意的是,这种方式有点浪费带宽,因为从服务器发送的数据有很多冗余(每次更新发送的几乎都是相同的标记,只有很小的变化)。还有其他方法可以通过向客户端发送较小的数据表示(例如 JSON)并让客户端解释它并填充标记来做到这一点。
    • 感谢您的回答。我会等待以防有人争论,然后我会将你的答案标记为正确的;)
    • 我同意@Slicedpan。你绝对可以使用一些客户端模板系统,比如把手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2021-12-17
    • 2012-09-12
    相关资源
    最近更新 更多