参数数量错误

时间:2014-12-25 20:42:40

标签: javascript jquery ruby-on-rails ruby

我有以下jQuery可排序代码:

$( ".list" ).sortable({
update: function(){
  $.ajax({
    url: '/books/sort',
    type: 'post',
    items: 'li',
    data: $('.list').sortable('serialize'),
    dataType: 'script',
    complete: function(request){
      alert("jjjj");
    }
  });
}
});

和我的控制器中的排序操作如:

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

但是我收到了错误:

ArgumentError (wrong number of arguments (2 for 1)):
   app/controllers/books_controller.rb:28:in `block in sort'

2 个答案:

答案 0 :(得分:5)

如果有人在这里想到了同样的事情,那你就得到了错误的数量"错误的数量"它导致Rails发生了变化(我相信它是4.0),移动了指定条件的部分。

因此,要实现这一点,您必须使用以下内容:

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

其他一切都会按预期工作。

答案 1 :(得分:4)

执行以下操作

Book.where(id: id).
  update_all(position: index+1)

如果您阅读documentation,则明确说明: -

  

参数:

     

updates - 表示SQL语句的SET部分的字符串,数组或散列。