我已經遍尋全面的解決方案,但找不到適合我的具體問題或我能理解的問題。我有一個RoR應用程序,允許用戶使用JQuery UI的Sortable在拖放界面上對「選舉」進行「投票」。我將拖放列表中的每個元素都稱爲「首選項」。所有「首選項」從未排序(sortable2)列開始,用戶將它們拖到排序列(sortable1)。我只想保存用戶拖入「sortable1」的「首選項」的位置。Ruby on Rails with JQuery可排序問題
對於拖放,我使用JQuery UI的Sortable,並且界面非常好。但是,實際上,我提交每個首選項的位置以最終將其記錄在數據庫中時遇到問題。這是我的第一個網絡應用程序,我對此很新。提前感謝您的幫助。下面是我的代碼:
在視圖中創建一個新的投票:
<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:
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
在vote.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
在preference.rb,我有:
class Preference < ActiveRecord::Base
attr_accessible :position
belongs_to :vote, dependent: :destroy
end
在routes.rb中,我有:
resources :votes do
put :sort
end
老實說,它將使我的一天,如果有人將我的英雄和幫助兄弟出來了。我搜索了很長時間以避免發佈可能是多餘的東西,但是我在這裏和通過谷歌找到的所有內容都無法幫助我。謝謝。