使用Ruby On Rails上的循环更新数据库

时间:2015-12-15 23:13:56

标签: ruby-on-rails ruby

我正在尝试为每个循环执行更新我的数据库。我正在使用这段代码进行更新:

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"]}

我该如何循环呢?我不知道

1 个答案:

答案 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"]中的所有逻辑。你可以(应该)定义它之外的变量。