Rails RJS с jQuery - Почему моя страница не обновляется? - PullRequest
1 голос
/ 28 февраля 2011

У меня есть элемент выбора html со связанным событием изменения javascript с использованием jQuery.Когда происходит изменение, может произойти одно из нескольких различных событий в зависимости от выбранной опции.Первоначальный вызов осуществляется через ajax к контроллеру rails, где обрабатывается логика.

Здесь возможно одно из трех:

  1. некоторые элементы страницы отключены
  2. некоторые элементы страницы включены
  3. добавлены дополнительные элементы страницы

По какой-то причине я не могу заставить № 3 работать!Firebug показывает мне правильные заголовки запроса и ответа, а сервер сообщает, что шаблоны были успешно обработаны, но на экране ничего не отображается.Я дошел до того, что жестко закодировал идентификатор элемента, попробовал простую визуализацию, но все равно не повезло.

Вот мой файл RJS:

# IF A BUTTON DOES NOT ALREADY EXIST  
page << "if($('<%= @button_id.to_s %>').length < 1){"  

    # GENERATE THE ID OF THE DIV ELEMENT THAT I NEED TO ADD ELEMENTS AFTER  
    field_type_selector = '#q_'+@q_id.to_s+'_field_type_div';  

    # AFTER THE DIV HOLDING THE SELECT ELEMENT, RENDER THE PARTIAL THAT ADDS SOME OPTIONS AND A BUTTON  
    page[field_type_selector].after(render(:partial=>'question_builder/add_option_button_during_edit'))

# IF THE BUTTON IS ALREADY THERE  
page << "}else{"  

    # ENABLE THE ELEMENTS THAT WERE PREVIOUSLY DISABLED  
    page[@choices_div + " :input"].removeAttr('disabled')  
    page[@choices_div].removeClass('disabled')  
page << "}"`

Я старалсякодирование идентификатора элемента, рендеринг простых паролей "hello world" и т. д. и не может понять, откуда возникла проблема.Между тем, используя консоль, я очень легко могу добавить элементы в этот же раздел: $ ('# element_id'). After ("Привет, мир.)

Где еще можно сообщать об ошибках, кроме консоли Firebug и окна терминала сервера?Я в тупике.

  • Крис

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Решение этой проблемы не было очевидным, но вот оно:

$("#field_id").after("<%= escape_javascript(render :partial=>'folder/myPartial') %>");

Обратите внимание, что мне пришлось поместить весь блок ERB в кавычки!

0 голосов
/ 28 февраля 2011

Из опыта хорошо использовать escape_javascript вокруг метода render ()

так это может выглядеть:

page[field_type_selector].after(escape_javascript(render(:partial=>'question_builder/add_option_button_during_edit')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...