2015-12-15 86 views
1

我正在嘗試爲每個循環更新我的數據庫。我正在使用這段代碼進行更新:在Ruby On Rails上使用循環更新數據庫

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的內容[:爲了]

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

'''@t_order [「0」]。each''''? – osman

回答

1

它迭代一次,因爲params[:order]只有一個元素。你想要做的是迭代@t_order["0"],它有3個元素。

此外,你應該避免在respond_to內的所有邏輯。你可以(應該)定義它之外的變量。