Сериализация jQuery с использованием rails не работает для пользовательских идентификаторов - PullRequest
0 голосов
/ 01 августа 2011

Я почти уверен, что это какая-то ошибка Javascript, а не ошибка Rails после многочисленных попыток put () для моих идентификаторов ...

То, что я пытаюсь сделать, это сериализовать кучу li с помощью функции сериализации jQuery. Я хочу сделать это на основе пользовательского набора идентификаторов ... В моем случае, podli-1, podli-2, podli-3 и т. Д. Я пытаюсь сделать это с помощью опции сериализации "expression".

Когда я пытаюсь отладить его с помощью предупреждений (как вы можете видеть ниже), я получаю следующее: id = undefined & id = undefined & id = undefined & id = undefined & id = undefined & id = undefined & id = undefined

- это на самом деле правильное число ли, но по какой-то причине все идентификаторы не определены. Как я уже сказал, все это работает в Rails, но есть некоторая ошибка JS.

Вот код Rails.

<% @pods.each do |podli| %>
<% @podli = podli %>
<% @iden = 'podli-' << @podli.id.to_s %>
<li id="<%= @iden %>" class="ui-state-default">
   ....
</li>
<% end %>

А вот и JavaScript

$(document).ready(function(){
transitions();
//$( "#sortable" ).sortable({containment: 'parent'});
$(  "#sortable"  ).sortable({ items: '.ui-state-default', containment: 'parent'})//for moving the pods about
$( "#sortable" ).disableSelection();
//$("#newspod" ).val("Enable Sort").closest("#newspod").removeClass("sortable")
$('#sortable').live('sortstop', function(event) {
    var u = $(this).sortable('serialize', { key: 'id', expression: /podli-\d/ })//  + '&index=' + jQuery(this).attr("id").substring(19);
    alert(u);
    $.ajax({
      type: 'POST', 
      data: { display_order: u },//$('#receiving-list').sortable('serialize')  + '&index=' + jQuery(this).attr("id").substring(19), 
      url: "<%= sort_dashboards_path %>"
    })

});

});

1 Ответ

0 голосов
/ 01 августа 2011

Когда вы вызываете метод "serialize" (через плагин "sortable"), ваше регулярное выражение "expression" должно включать группу захвата вокруг любого значения, которое должно быть:

 var u = $(this).sortable('serialize', { key: 'id', expression: /podli-(\d+)/ });

Обернув «\ d» (обратите внимание, что я ничего не мог с собой поделать, и добавил «+» к этому, если у вас когда-либо будет больше 10) в скобках, плагин получит то, что ожидает от вашего регулярного выражения .

Документация пользовательского интерфейса jQuery для этого метода ужасна.

...