1

使用 Rails 3。

状态表中的模型:

id
country_id
position
created_at
updated_at

Javascript:

$(".sortable_country").sortable({
    connectWith: ".sortable_country",
    update: function() {
        console.log($(this).sortable("serialize"));
    }
});

HTML:

<strong>Country 1</strong>
<ul id="country_1" class="sortable_country">
    <li id="state_1">
        State 1
    </li>
    <li id="state_2">
        State 2
    </li>
    <li id="state_3">
        State 3
    </li>
    <li id="state_4">
        State 4
    </li>
</ul>
<strong>Country 2</strong>
<ul id="country_2" class="sortable_country">
    <li id="state_5">
        State 5
    </li>
    <li id="state_6">
        State 6
    </li>
    <li id="state_7">
        State 7
    </li>
    <li id="state_8">
        State 8
    </li>
</ul>

斑点控制器.rb:

def sort
  params[:states].each_with_index do |id, index|
    State.update_all([&rsquo;position=?&rsquo;, index+1], [&rsquo;id=?&rsquo;, id])
  end
  render :nothing => true
end

请忽略其他必需的代码,因为我已经简化了代码以进行故障排除。在这个例子中,我排序State 5Country 1列表。排序后返回序列化结果为:

state[]=6&state[]=7&state[]=8
state[]=1&state[]=2&state[]=3&state[]=5&state[]=4

如何country_id在序列化结果中包含关联,以便我的应用程序可以适当地将State 5's更新country_id1最初2在排序之前的 's?

谢谢你。

4

1 回答 1

1

把它放在里面.sortable()

update: function() {
    $.post($(this).data('update-url'), $(this).sortable('serialize'))
    .error(function() { 
    alert("Sorry, could not save the positions. Please refresh this page.");
    })
}

关联的 ID 将在排序后自动发布在单独的帖子中。

于 2012-04-19T13:53:05.210 回答