【问题标题】:Rails 3.1 - Drag Drop Re-order without acts_as_list?Rails 3.1 - 没有acts_as_list的拖放重新排序?
【发布时间】:2012-05-17 10:23:40
【问题描述】:

我想在我的应用程序中允许拖放重新排序功能。我知道我可以使用acts_as_list 来做到这一点,并且在这方面遵循了Rails 食谱。但是,由于我的应用程序的构建方式,我要重新排序的项目不能使用acts_as_list,因为它从另一个模型中的嵌套项目继承了它的位置字段。当我使用acts_as_list时,这似乎覆盖了位置值,这意味着父模型中设置的顺序丢失,子位置是随机的。

所以我想我有两个问题:

我可以在没有 Acts_As_List 的情况下构建 Ajax 样式的拖放重新排序工具吗?

我可以在模型中添加某种 if 语句以在创建时禁用acts_as_list 但在所有其他时间启用吗?类似的东西(英文而不是代码):

if method = create
  child.position = parent.position
else
  acts_as_list
end

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3 acts-as-list


    【解决方案1】:

    ranked-model 是一个选项。示例用法:

    class Duck < ActiveRecord::Base
    
      include RankedModel
      ranks :row_order
    
    end
    

    【讨论】:

      【解决方案2】:

      我很确定 jquery UI 有某种插件/模块,无论他们为此调用什么,例如 draggable and sortable,然后也许他们有一个成功的方法,你可以使用 ajax 记录它的位置,这样如果用户之前刷新保存,它会保存它在“列表”中的位置。

      【讨论】:

        【解决方案3】:

        你可以重写在acts_as_list中调用的before_save函数:

        class Duck < ActiveRecord::Base
        
          private
        
          def add_to_list_bottom
            # leave blank to override default acts_as_list before_save function
          end
        
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-19
          • 1970-01-01
          • 2013-05-11
          • 2012-05-31
          • 1970-01-01
          相关资源
          最近更新 更多