私はこれに対する解決策をあちこち探しましたが、私の特定の問題に合うもの、または私が理解できるものを見つけることができませんでした。JQuery UIのSortableを使用して、ドラッグアンドドロップインターフェイスを使用して「選挙」に「投票」をキャストできるRoRアプリがあります。ドラッグアンドドロップリストの各要素を「設定」と呼びます。すべての「設定」は、並べ替えられていない(sortable2)列から始まり、ユーザーはそれらを並べ替えられた列(sortable1)にドラッグします。ユーザーが「sortable1」にドラッグした「設定」の位置のみを保存したい。
ドラッグアンドドロップには、JQuery UIのSortableを使用しましたが、インターフェイスは非常に優れています。しかし、実際に各設定の位置を送信して、最終的にデータベースに記録するのに問題があります。これは私の最初のWebアプリであり、これは非常に新しいものです。よろしくお願いします。これが私が持っているコードです:
新しい投票を作成するためのビューで:
<script>
$(function() {
$( "ul.droptrue" ).sortable({
connectWith: "ul"
});
$( "#sortable1, #sortable2" ).disableSelection();
});
<ul id="sortable1" class='droptrue'>
Preferences:
</ul>
<ul id="sortable2" class='droptrue'>
Unranked candidates:
<% @vote.preferences.each do |preference| %>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
<%= preference.candidate.name %></li>
<% end %>
</ul>
オンラインで見つけたアドバイスから、votes_controller.rbに「sort」を追加しました。
class VotesController < ApplicationController
respond_to :html, :json
# I added this
def sort
params[:preferences].each_with_index do |id, index|
@vote.preferences.update(['position=?', index+1], ['id=?', id])
end
render nothing: true
end
投票.rbでは、私は持っています:
class Vote < ActiveRecord::Base
# ...
has_many :preferences
accepts_nested_attributes_for :preferences, allow_destroy: true, reject_if: lambda { |c| c.values.all?(&:blank?) }
end
Preferences.rbには、次のものがあります。
class Preference < ActiveRecord::Base
attr_accessible :position
belongs_to :vote, dependent: :destroy
end
ルート.rbには、次のものがあります。
resources :votes do
put :sort
end
正直なところ、誰かが私のヒーローになって兄弟を助けてくれるなら、それは私の一日になるでしょう。冗長かもしれない何かを投稿することを避けるために私はかなり長い間検索しました、しかし私がここでそしてグーグルを通して見つけたすべては私を助けることができませんでした。ありがとうございました。