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>

spot_controller.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 5ますCountry 1。ソート後、返されるシリアル化の結果は次のとおりです。

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

シリアル化された結果に associated を含めて、最初は並べ替え前だったをにアプリがcountry_id適切に更新できるようにするにはどうすればよいですか?State 5country_id12

ありがとうございました。

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 に答える