我有以下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'
答案 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部分的字符串,数组或散列。