2012-05-17 94 views
1

我想在我的應用程序中允許拖放重新排序功能。我知道我可以用acts_as_list來做到這一點,並遵循Rails Recipe。但是,由於我的應用程序的構建方式,我想要重新排序的項目不能使用acts_as_list,因爲它繼承了位置字段,以便從另一個模型中的嵌套項目創建。當我使用acts_as_list時,這似乎覆蓋位置值,意味着在父模型中設置的順序會丟失,子位置則是隨機的。Rails 3.1 - 拖放刪除沒有acts_as_list的重新排序?

,所以我想我有兩個問題:

我可以構建一個Ajax風格的阻力和不Acts_As_List下降訂貨設施?

我可以把某種如果與模型語句來禁用acts_as_list上創建,但能夠在其他時間?喜歡的東西(在英語,而不是代碼):

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

回答

0

我敢肯定jQuery UI的具有某種插件/模塊不管他們叫他們爲這個像draggable and sortable那麼也許他們可以使用一個成功的方法ajax記錄它的位置,這樣如果用戶在保存之前刷新,它會將它保存在「列表」中。

1

ranked-model是一個選項。用法示例:

class Duck < ActiveRecord::Base 

    include RankedModel 
    ranks :row_order 

end 
0

你可以只覆蓋,被稱作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