使用 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([’position=?’, index+1], [’id=?’, id])
end
render :nothing => true
end
请忽略其他必需的代码,因为我已经简化了代码以进行故障排除。在这个例子中,我排序State 5
到Country 1
列表。排序后返回序列化结果为:
state[]=6&state[]=7&state[]=8
state[]=1&state[]=2&state[]=3&state[]=5&state[]=4
如何country_id
在序列化结果中包含关联,以便我的应用程序可以适当地将State 5
's更新country_id
为1
最初2
在排序之前的 's?
谢谢你。