jquery - Ruby on Rails 与 JQuery 可排序问题

标签 jquery ruby-on-rails ruby-on-rails-3 jquery-ui jquery-ui-sortable

我已经到处寻找解决方案,但找不到适合我的具体问题或我能理解的解决方案。我有一个 RoR 应用程序,允许人们使用 JQuery UI 的 Sortable 使用拖放界面对“选举”进行“投票”。我将拖放列表中的每个元素称为“首选项”。所有“首选项”都从未排序 (sortable2) 列开始,用户将它们拖动到已排序列 (sortable1)。我只想保存用户拖动到“sortable1”中的“首选项”的位置。

对于拖放,我使用了 JQuery UI 的 Sortable,界面非常漂亮。但是,我在实际提交每个首选项的位置以最终将其记录在数据库中时遇到问题。这是我的第一个网络应用程序,我对此非常陌生。预先非常感谢您的帮助。这是我的代码:

在创建新投票的 View 中:

<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

老实说,如果有人能成为我的英雄并帮助兄弟摆脱困境,我会很开心。我搜索了很长时间以避免发布可能多余的内容,但我在这里和通过谷歌找到的所有内容都无法帮助我。谢谢。

最佳答案

我们正在做的方式是:

  1. 使用'stop' event关于“可排序”。
  2. 在停止事件中,迭代索引为“ul”的所有元素。索引是项目的“排序位置”。
  3. 进行 ajax POST 来修改所有项目的位置。

关于jquery - Ruby on Rails 与 JQuery 可排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045581/

相关文章:

ruby-on-rails - 我应该关心 Newrelic Rails 应用程序中的 DOM 处理时间吗?

ruby-on-rails-3 - 使所有 ActionViewer 辅助方法在模块中可用

ruby-on-rails - 邮件中未定义的方法 "to_liquid",但页面中没有

javascript - 如何在rails中发送post请求并接收返回的json

javascript - 多功能合而为一

javascript - 当在 jsp 中点击一个按钮时,它再次调用 js 中的 ready 函数。错误

ruby-on-rails - 捕获断言语句的结果?

javascript - PHP 在单选按钮上将单选值发布到下一页

jquery - div溢出时的分页

ruby-on-rails - 样式化 ERB 的最佳实践