jQuery on Rails
Наверняка есть фанаты 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 script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails
2) Подгружаем джаваскрипт в лэйауте.
-
<%= javascript_include_tag :defaults %>
Этот кусок кода подгружает стандартные джаваскрипт файлы. Раньше это были прототайп и script.aculo.us.
-
<script src="/javascripts/jquery.js" type="text/javascript"></script>
-
<script src="/javascripts/jquery-ui.js" type="text/javascript"></script>
-
<script src="/javascripts/jquery-fx.js" type="text/javascript"></script>
-
<script src="/javascripts/jrails.js" type="text/javascript"></script>
-
<script src="/javascripts/application.js" type="text/javascript"></script>
3) Controller
Тут всё очень просто. Просто посылаем назад текст.
-
def show_time
-
render :text => Time.now
-
end
4) View
-
<div id="time"></div>
-
-
<%= link_to_remote 'Show time', :url => {:action => 'show_time'}, :update => 'time' %>
И посмотрим какой код сгенерировала функция link_to_remote.
-
<a href="#" onclick="$.ajax({async:true, complete:function(request){$("#time").html(request.responseText);}, data:'authenticity_token=' + encodeURIComponent('dcb4a97d480295e7e5fabb61843853fc8889659a'), dataType:'script', url:'/show_time'}); return false;">Show time</a>
Работает! Я всё равно буду использовать стандартные джаваскрипт библиотеки в своих проектах, ну а фанатам jQuery удачи! ![]()
No comments yet. Be the first.
Leave a reply