我正在尝试为每个循环执行更新我的数据库。我正在使用这段代码进行更新:
def update
respond_to do |format|
@t_id = params[:t_id]
@t_order = params[:order]
@t_relation = TRelation.where('t_id' => @t_id)
@i = 0;
@t_order.each do |p|
@t_relation = TRelation.where('t_id = ? and
video_id = ?', @t_id, p[1][@i])
@i = @i + 1
@t_relation[0].t_order = @i
@t_relation[0].save
end
format.json { render :nothing => true, :status => 200, :content_type => 'text/html' }
end
end
它没有循环;它经历了一次并停止。我不明白发生了什么。
这是params [:order]
的内容params[:order] = {ActionController::Parameters} ActionController::Parameters (1 element)
'0' = Array (3 elements)
[0] = "7"
[1] = "5"
[2] = "3"
如果我做了@timeline_order.inspect
,我就明白了:
{"0"=>["7", "5", "3"]}
我该如何循环呢?我不知道
答案 0 :(得分:1)
迭代一次,因为>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2])
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
只有一个元素。你想要做的是迭代params[:order]
,它有3个元素。
此外,您应该避免@t_order["0"]
中的所有逻辑。你可以(应该)定义它之外的变量。