Ajax Russia : Аякс по-русски

Свежие новости из мира IT

jQuery on Rails

jRailsНаверняка есть фанаты jQuery, которые не хотят пользоваться Ruby on Rails из за того, что с рельсами в комплекте идут Prototype и Script.aculo.us. Теперь этому пришёл конец. И всё благодаря одному плагину - jRails. После его установки, все функции, которые раньше выдавали джаваскрипт, будут выдавать код jQuery.

Список поддерживаемых функций:

Prototype:

  • form_remote_for
  • form_remote_tag
  • link_to_remote
  • observe_field
  • observe_form
  • periodically_call_remote
  • remote_form_for
  • submit_to_remote

Script.aculo.us:

  • draggable_element
  • drop_receiving_element
  • sortable_element
  • visual_effect

RJS:

  • hide
  • insert_html
  • remove
  • replace
  • replace_html
  • show
  • toggle

Работу эффектов можно посмотреть по этой ссылке. Автор утверждает, что все эффекты работают идентично аналогам от Script.aculo.us.

А я попробую этот плагин в деле. Сделаю асинхронный запрос на сервер, получу оттуда время и покажу этот результат в DIV'e.

1) Установка плагина

RUBY:
  1. ruby script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails

2) Подгружаем джаваскрипт в лэйауте.

RUBY:
  1. <%= javascript_include_tag :defaults %>

Этот кусок кода подгружает стандартные джаваскрипт файлы. Раньше это были прототайп и script.aculo.us.

HTML:
  1. <script src="/javascripts/jquery.js" type="text/javascript"></script>
  2. <script src="/javascripts/jquery-ui.js" type="text/javascript"></script>
  3. <script src="/javascripts/jquery-fx.js" type="text/javascript"></script>
  4. <script src="/javascripts/jrails.js" type="text/javascript"></script>
  5. <script src="/javascripts/application.js" type="text/javascript"></script>

3) Controller
Тут всё очень просто. Просто посылаем назад текст.

RUBY:
  1. def show_time
  2.     render :text => Time.now
  3. end

4) View

RUBY:
  1. <div id="time"></div>
  2.  
  3. <%= link_to_remote 'Show time', :url => {:action => 'show_time'}, :update => 'time' %>

И посмотрим какой код сгенерировала функция link_to_remote.

HTML:
  1. <a href="#" onclick="$.ajax({async:true, complete:function(request){$(&quot;#time&quot;).html(request.responseText);}, data:'authenticity_token=' + encodeURIComponent('dcb4a97d480295e7e5fabb61843853fc8889659a'), dataType:'script', url:'/show_time'}); return false;">Show time</a>

Работает! Я всё равно буду использовать стандартные джаваскрипт библиотеки в своих проектах, ну а фанатам jQuery удачи! ;)

del.icio.us Забобрить!

No comments yet. Be the first.

Leave a reply