0

私は Backbone Railscasts と並べ替え可能なリスト Railscast に従っていますが、それらをまとめるのに問題があります。

バックボーン テンプレート:

<ul id="faqs" data-update-url="/api/faqs/sort">
</ul>

バックボーン ビュー:

render: ->
  $(@el).html(@template())
  @collection.each(@appendFaqs)

  $("#faqs").sortable
    axis: 'y'
    update: ->
      $.post($(this).data('update-url'), $(this).sortable('serialize'))

Railsコントローラー:

class FaqsController < ApplicationController

  def sort
   params[:faq].each_with_index do |id, index|
      Faq.update_all({position: index+1}, {id: id})
    end
    render nothing: true
  end

出力:

Started POST "/api/faqs/sort" for 127.0.0.1 at 2012-06-03 01:17:20 +0200
Processing by FaqsController#sort as */*
Completed 500 Internal Server Error in 1ms

NoMethodError (undefined method `each_with_index' for nil:NilClass):
  app/controllers/faqs_controller.rb:28:in `sort'

私のパラメータがゼロであることを理解しています。しかし、私が複製した railscast コードプロジェクトでなぜそれが機能しているのかわかりません。

toJSON メソッド (バックボーン) を上書きする必要があることがわかりましたが、この方法で行けばよいのでしょうか?

正直なところ、私は制御不能です。

使用したRailscast:

4

1 に答える 1

0

<li>要素に id を設定する必要があります。

<li id="faq_1">...</li>
<li id="faq_2">...</li>
<li id="faq_3">...</li>
<li id="faq_4">...</li>

serialize メソッドをよりよく理解するには、これを読む必要があります。

于 2012-06-03T19:58:13.907 に答える