我希望能够拖动和拖动嵌套在Category模型下的App模型。
这是我试图关注的Railscast。
#Category controller
def move
params[:apps].each_with_index do |id, index|
Category.last.apps.update(['position=?', index+1], ['id=?', Category.last.id])
end
render :nothing => true
end
我能够用类似的东西对类别进行排序,但由于我正在更新属性,我遇到了麻烦。这就是我对“类别”列表进行排序的方式。
def sort
params[:categories].each_with_index do |id, index|
Category.update_all(['position=?', index+1], ['id=?', id])
end
render :nothing => true
end
经过进一步检查,我需要的是能够同时更新所有应用程序,除了我不能只做App.update_all,因为App是类别的属性。
我尝试使用
@category = Category.find(params[:id])
@app = @category.apps.all
但是,我没有传递类别ID,所以它不知道它是哪个类别。
这是我认为的
%ul#apps
- for app in @category.apps
- content_tag_for :li, app do
%span.handle
[drag]
= h app.title
= sortable_element("apps", :url => move_categories_path, :handle => "handle")
感谢任何帮助。
答案 0 :(得分:1)
原来这只是按位置对记录进行排序的问题。我在控制器中排序类别。因此,对于嵌套属性模型,我在模型中对它们进行了排序:
has_many :apps, :dependent => :delete_all, :order => "position"
当我移动应用程序时,只需调用
即可更新位置App.update_all(['position=?', index+1], ['id=?', id])
然后我在模型中对它们进行相应的排序。事实证明,没有必要传递类别的ID,只需更新所有应用程序。但是,我担心它可能会慢一点,所以如果有人有更好的解决方案,我会全力以赴。
由于