我正在关注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:
答案 0 :(得分:0)
您需要在<li>
元素上设置ID:
<li id="faq_1">...</li>
<li id="faq_2">...</li>
<li id="faq_3">...</li>
<li id="faq_4">...</li>
您应该阅读本文以更好地理解serialize method。