0

htmlには、.columnクラスを持つ2つのdivがあります。そこで、各.columndivのデータをシリアル化するための各ループを作成しました。

// item.js
$('.column').each(function(){
  update: $.post($(this).data('update-url'), $(this).sortable('serialize'));
});

例はとitem[]=1&item[]=5&item[]=4ですitem[]=2&item[]=3。これらのパラメーターは、POSTを介してソートされたRailsコントローラーに送信されます。

レールコントローラーにいる間

def sort
  params[:item].each_with_index do |id, index|
    Item.where(_id: id.last).update(position: index+1)
    #Item.where(_id: id.last).update(position: index+4)
  end
  render nothing: true
end

Q:ポストパラメーターをDRYの方法で処理するにはどうすればよいですか?最初のリクエスト(item[]=1&item[]=5&item[]=4)では、データベース(mongoid)を。position: index+1で更新し、2番目のリクエストではデータベース(mongoid)を。で更新しposition: index+4ます。ありがとう。

4

1 に答える 1

0

増分値をフォームのパラメータとして送信できます。ビューで、タグ内に新しい隠しタグを追加するだけformです (ERB を使用していると仮定します)。

<%= hidden_field_tag :increment, [INCREMENT_VALUE] %>

sortメソッドを次のように編集します

def sort
  params[:item].each_with_index do |id, index|
    Item.where(_id: id.last).update(position: index+1 + params[:increment].to_i)
  end
  render nothing: true
end
于 2012-06-03T17:00:08.977 に答える