2

カテゴリモデルの下にネストされているアプリモデルをドラッグアンドドラッグできるようにしたい。

http://railscasts.com/episodes/196-nested-model-form-part-1

これが私がフォローしようとした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はカテゴリの属性であるため、App.update_allを実行できない場合を除いて、すべてのアプリを同時に更新できるようにする必要があります。

使ってみました

@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")

どんな助けでも大歓迎です。

4

1 に答える 1

1

結局のところ、それはレコードを位置でソートするだけの問題でした。コントローラでカテゴリを並べ替えていました。したがって、ネストされた属性モデルの場合、モデルでそれらをソートしました。

has_many :apps, :dependent => :delete_all, :order => "position"

アプリを動かすと、電話するだけで位置が更新されます

App.update_all(['position=?', index+1], ['id=?', id])

次に、モデルでそれらを適宜並べ替えます。カテゴリのIDを渡す必要はなく、すべてのアプリを更新するだけであることがわかりました。しかし、私はそれが少し遅くなるかもしれないのではないかと心配しているので、誰かがより良い解決策を持っているなら、私はすべての耳です。

ありがとう

于 2010-03-08T06:07:03.203 に答える