Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 2 to Rails 3 : using link_to instead of link_to_remote (including remote and update)

A quick and easy answer I'm sure. I'm upgrading a Rails project from version 2 to version 3 and replacing a load of the link_to_remote with link_to's as per the Rails 3 update. Even something as simple as :

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

doesn't seem to work. The request (using get method) is going through ok and the rendered html is :

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

Routes.rb entry :

get "monitoring/get_time"

As I say I'm sure this is a very obvious issue on my part!

like image 501
detheridge02 Avatar asked Apr 01 '11 09:04

detheridge02


2 Answers

The :update option isn't supported by the new link_to :remote => true.

You will either have to

  • use the legacy plugin
  • write the JS/AJAX yourself instead of using :remote => true
  • use render :update { |page| p.replace_html ... }
like image 139
Marcel Jackwerth Avatar answered Nov 06 '22 01:11

Marcel Jackwerth


The :update parameter is gone. You need to handle the DOM update yourself using Unobtrusive JavaScript. Also, make sure you actually included the csrf_meta_tag helper in your layout.

I wrote an article about using unobtrusive JavaScript in Rails 3.

like image 31
Simone Carletti Avatar answered Nov 06 '22 02:11

Simone Carletti