使用rails的jQuery序列化不适用于自定义ID

时间:2011-08-01 17:07:20

标签: javascript jquery ruby-on-rails serialization jquery-ui-sortable

我非常确定这是一种Javascript错误,而且在我的id上进行了多次puts()试验之后不会出现Rails错误......

我要做的是使用jQuery的序列化函数序列化一堆li。我想基于一组自定义ID来做...在我的例子中,podli-1,podli-2,podli-3等我尝试通过使用序列化“表达式”选项来做到这一点。

当我尝试使用警报进行调试时(我在下面看到),我从这里得到的是:id = undefined& id = undefined& id = undefined& id = undefined& id = undefined& id = undefined&amp ; id =未定义

- 这实际上是正确数量的li,但由于某种原因,所有id都是未定义的。正如我所说,它都在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 :(得分:0)

当您调用“序列化”方法(通过“可排序”插件)时,您的“表达式”正则表达式必须包含一个捕获组,无论该值应该是什么:

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

通过包装“\ d”(注意我无法帮助自己,我添加了“+”,如果你的括号中有超过10个),插件将获得它对你的正则表达式的期望

该方法的jQuery UI文档非常糟糕。