ruby-on-rails
  • ruby
  • ajax
  • ruby-on-rails-3
  • link-to
  • 2011-04-01 69 views 8 likes 
    8

    我确信一个快速简单的答案。 我正在将Rails项目从版本2升级到版本3,并根据Rails 3更新将link_to_remote的负载替换为link_to。即使这样简单:Rails 2 to 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" 
    

    正如我说,我敢肯定,这是一个非常明显的问题我这边!

    回答

    17

    :update选项不受新的link_to :remote => true支持。

    你将不得不

    • 使用legacy plugin
    • 写JS/AJAX自己,而不是使用:remote => true
    • 使用包含在主要布局render :update { |page| p.replace_html ... }
    +6

    您不需要完全替换:remote => true。使用它,并绑定来自rails.js的内置回调事件:'ajax:before','ajax:complete','ajax:success','ajax:failure'。 – 2012-06-26 13:55:54

    +0

    文章[“Unobtrusive JavaScript in Rails 3”](http://bit.ly/aCdHWY)有点过时(2010年6月8日),但有一些绑定这些事件的例子。 – 2013-02-08 22:58:42

    7

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

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

    +1

    csrf_meta_tag的。似乎是Ruby的一个问题,功能几乎在一夜之间出现和消失。 我可以理解删除的原因:更新,但它是一个非常有用的代码! 感谢您的帮助。 – detheridge02 2011-04-01 10:08:32

    +3

    请注意'Rails!= Ruby'。 – 2011-04-01 10:09:15

    +0

    是的,我的意思是Rails :-) 难道你不能告诉我是一个PHP编码器必须与Ruby握手:-) 伟大的文章的方式! – detheridge02 2011-04-01 10:15:00

    相关问题