【问题标题】:How do I iterate through all records and pass database value to a variable?如何遍历所有记录并将数据库值传递给变量?
【发布时间】:2014-10-15 18:21:53
【问题描述】:

我有两个表,“Que”和“Opts”。

我想遍历 Que 中的所有记录并将它们添加到变量 rikt_nrstart_nrend_nr,因为它们将位于 URL 的末尾,如下所示:

api.url.number=8-00001

如何让它遍历 Que 并将 rikt_nrstart_nrend_nr 传递给其余代码?

Que 表有以下字段:

create_table "ques", force: true do |t|
  t.integer  "rikt_nr"
  t.integer  "start_nr"
  t.integer  "end_nr"
  t.datetime "created_at"
  t.datetime "updated_at"
end

Opts 有这些字段:

create_table "opts", force: true do |t|
  t.string   "numbers"
  t.string   "operator"
  t.datetime "created_at"
  t.datetime "updated_at"
end

这是代码:

Que.all.each do | que |

  url = "http://api.url.number=" 

  que.rikt_nr = rikt_nr 
  que.start_nr = start_nr  
  que.end_nr = end_nr  
  st_en = start_nr..end_nr 

  st_en.each do |nr| 
    full_url = "#{url}" + rikt_nr.to_s + "-"+ nr.to_s

    doc = Nokogiri::XML(open(full_url)) 

    number = doc.at('Number').text  
    operator = doc.at('Name').text 

    number_operator = "#{number}" + ";" + " #{operator}"

    number_operator 

    save = @opts.create(:numbers => number, :operator => operator) 
  end
end

【问题讨论】:

  • 请格式化您的代码,使其更具可读性。这对每个人都有帮助。

标签: ruby-on-rails ruby database nokogiri


【解决方案1】:

我刚刚发现了这一点。

问题出在这里:

que.rikt_nr = rikt_nr 
que.start_nr = start_nr  
que.end_nr = end_nr  
st_en = start_nr..end_nr

所以我把它改成:

Que.all.each do | que |

  url = "http://api.url.number=" 

  st_en = que.start_nr..que.end_nr 

  st_en.each do |nr| 
    full_url = "#{url}" + que.rikt_nr.to_s + "-"+ nr.to_s

    doc = Nokogiri::XML(open(full_url)) 

    number = doc.at('Number').text  
    operator = doc.at('Name').text 

    number_operator = "#{number}" + ";" + " #{operator}"

    number_operator 

    save = @opts.create(:numbers => number, :operator => operator) 

  end
end

它现在可以工作了。

【讨论】:

  • 不要在 URL 中注入变量,使用 URI 类修改 URL 并为其添加任何参数。插值变量可能会导致未编码的值,这将使 URL 无效。 URI 将遵循规范并为您正确编码。见stackoverflow.com/questions/26390602/…
猜你喜欢
  • 1970-01-01
  • 2019-05-31
  • 2018-09-28
  • 1970-01-01
  • 2012-10-31
  • 2016-10-02
  • 2020-03-10
  • 1970-01-01
  • 2020-04-14
相关资源
最近更新 更多