2013-08-06 37 views
0

在我的控制器我試圖做一個批量插入到一個表中,在我第一次嘗試它的作品,但名稱以某種方式被弄亂如下:(循環運行24次這是我想要的)Rails - 簡單的循環不工作

test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11
test-port-name-0-1-2-3-4-5-6-7-8-9-10
test-port-name-0-1-2-3-4-5-6-7-8-9
test-port-name-0-1-2-3-4-5-6-7-8
test-port-name-0-1-2-3-4-5-6
test-port-name-0-1-2-3-4-5-6-7
test-port-name-0-1-2-3-4-5
test-port-name-0-1-2-3-4
test-port-name-0-1-2
test-port-name-0-1-2-3
test-port-name-0
test-port-name-0-1
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22
test-port-name-0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23

,而不是test-port-name-0 .... test-port-name-23

def bulk_port_import 
    if request.post? 
    #attempt create 
    count = 0 
    for i in 1..session[:no_ports] 
     params[:dp][:name] = params[:dp][:name] + '-' + count.to_s 
     @dp = DevicePort.create params[:dp] 
     count = count + 1 
    end 
    end 
@success = "Saved." if @dp.valid? 
    @error = "" 
    @dp.errors.each_full {|e| @error += e + ", "} 
    redirect_to '/device/update/' + params[:dp][:device_id] 
end 

不同的嘗試:

def bulk_port_import 
    if request.post? 
    #attempt create 
    i = 0 
    while i < session[:no_ports] do 
     params[:dp][:name] = params[:dp][:name] + '-' + i.to_s 
     @dp = DevicePort.create params[:dp] 
     i++ 
    end 
    end 
    session.delete(:no_ports) 
    @success = "Saved." if @dp.valid? 
    @error = "" 
    @dp.errors.each_full {|e| @error += e + ", "} 
    redirect_to '/device/update/' + params[:dp][:device_id] 
end 

但用這個我得到了syntax error, unexpected kEND,我看不出在這兩種情況下我做錯了什麼,它可能再次是愚蠢的。

回答

2

它,因爲你正在改變PARAMS [:DP] [:名字]在循環

def bulk_port_import 
    if request.post? 
    #attempt create 
    count = 0 
    for i in 1..session[:no_ports] 
     dp_name = params[:dp][:name] + '-' + count.to_s 
     @dp = DevicePort.create(params[:dp].merge(:name => dp_name)) 
     count = count + 1 
    end 
    end 
    @success = "Saved." if @dp.valid? 
    @error = "" 
    @dp.errors.each_full {|e| @error += e + ", "} 
    redirect_to '/device/update/' + params[:dp][:device_id] 
end 
+0

謝謝你,該訣竅 – martincarlin87