【问题标题】:Rails 2 to Rails 3 : using link_to instead of link_to_remote (including remote and update)Rails 2 到 Rails 3:使用 link_to 代替 link_to_remote(包括远程和更新)
【发布时间】:2011-04-01 09:57:14
【问题描述】:

我敢肯定,这是一个快速而简单的答案。 我正在将 Rails 项目从版本 2 升级到版本 3,并根据 Rails 3 更新用 link_to 替换加载的 link_to_remote。甚至像这样简单的事情:

<%= link_to "Check Time",
        {:action=>:get_time}, :remote=>true, :update=>'current_time' %>
<div id='current_time'></div>

似乎不起作用。请求(使用 get 方法)正常,呈现的 html 是:

<a href="/monitoring/get_time" data-remote="true" update="current_time">Check Time</a> 

Routes.rb 条目:

get "monitoring/get_time"

正如我所说,我确信这对我来说是一个非常明显的问题!

【问题讨论】:

    标签: ruby-on-rails ruby ajax ruby-on-rails-3 link-to


    【解决方案1】:

    新的link_to :remote =&gt; true 不支持:update 选项。

    你要么必须

    • 使用legacy plugin
    • 自己编写 JS/AJAX 而不是使用:remote =&gt; true
    • 使用render :update { |page| p.replace_html ... }

    【讨论】:

    • 你不需要完全替换 :remote => true。使用它,并绑定来自 rails.js 的内置回调事件:'ajax:before'、'ajax:complete'、'ajax:success'、'ajax:failure'。
    • 文章 "Unobtrusive JavaScript in Rails 3" 有点过时(2010 年 6 月 8 日),但有一些绑定这些事件的示例。
    【解决方案2】:

    :update 参数消失了。您需要使用 Unobtrusive JavaScript 自己处理 DOM 更新。此外,请确保您确实在布局中包含了 csrf_meta_tag 助手。

    我写了一篇关于using unobtrusive JavaScript in Rails 3的文章。

    【讨论】:

    • csrf_meta_tag 包含在主布局中。似乎是 Ruby 的一个问题,功能几乎在一夜之间出现和消失。我可以理解删除 :update 的原因,但这是一段非常有用的代码!感谢您的帮助。
    • 是的,我的意思是 Rails :-) 你不能说我是一名 PHP 编码员,必须掌握 Ruby :-) 顺便说一句很棒的文章!
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多