Преобразование в JQUERY из прототипа - PullRequest
1 голос
/ 24 декабря 2010

В настоящее время у меня есть сайт Rails, на котором есть несколько скриптов для прототипов.Однако мой начальник хочет, чтобы я преобразовал страницу, чтобы она использовала библиотеку JQUERY.У меня нет большого опыта программирования на Javascript, поэтому я немного запутался.Я в основном скачал плагин под названием 'jrails', который помогает перемещаться по нужным помощникам из 'script.aculo.us' Prototype и переводит их в то, что JQUERY может понять

Вот два кода:

Прототип:

new Form.Element.Observer('new_member_search', 0.5, function(element, value){
    new Ajax.Updater('ProjectMemberNew', '/of/user/search', {
        asynchronous:true,
        evalScripts:true,
        parameters:'username=' + encodeURIComponent(value)
    }); 
});

Jquery:

$('#new_member_search').delayedObserver(0.5, function(element, value){
    $.ajax({
        data:'username=' + value,
        success:function(request){
            $('#ProjectMemberNew').html(request);
        },
        type:'post', 
        url:'/of/user/search'
    });
});

Код прототипа работает нормально, но Jquery, похоже, не запускается по некоторым причинам.Кстати, я ничего не изменил в представлении, просто включил «jrails» на страницу.Есть идеи, почему это не работает?Спасибо,

РЕДАКТИРОВАТЬ 1:

Итак, я провел несколько тестов в Firebug и подумал, может быть, мне следовало опубликовать исходный код rails:

 <%= drop_receiving_element drop_id,
  :onDrop => "function(drag_element, drop_element, event){
if (confirm(\"#{escape_javascript(_('This will remove User from this Group, are you sure?'))}\"))
{#{remote_function(:update => 'module_content',
:url => {:controller => :projects,
:action => :member_delete,
:id => @project.id},
:with => "'u=' + encodeURIComponent(drag_element.id)"
)};}
}",
  :accept => 'RolesUsersSelection',
  :hoverclass => "#{drop_class}_active"

%>

Когда я запускаю веб-страницу на firebug, версия jquery дает мне пару ошибок:

Prototype is not defined
[Break On This Error] linear: Prototype.K,
effect...2478493 (line 71)
$.effects is undefined
[Break On This Error] $.effects.drop = function(o) {
jquery...4111587 (line 15)
$("#RemoveThisMember").droppable is not a function
[Break On This Error] }, hoverClass:'ProjectRoleDropDelete_active'})
member_edit (line 323)
$("#role_15_user_4").draggable is not a function
[Break On This Error] $("#role_15_user_4").draggable({revert:true}) 

Что-то подсказывает мне, что я не могу просто перейти на jqueryбиблиотека без каких-либо изменений в коде рельсов ..

1 Ответ

0 голосов
/ 14 января 2011

Сначала нужно было инициализировать jquery, затем jquery-ui, а затем jrails.если это не в этом порядке, delayedObserver или любой другой помощник не будет инициализирован.Странно действительно.https://github.com/aaronchi/jrails/issues#issue/6

...