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>
spot_controller.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
シリアル化された結果に associated を含めて、最初は並べ替え前だったをにアプリがcountry_id
適切に更新できるようにするにはどうすればよいですか?State 5
country_id
1
2
ありがとうございました。