我目前正在使用 cities gem 来填充数据库中的城市列表,以创建地址。我被要求删除这个gem,并读入附带 cities gem 的城市文件夹中的所有 json 文件。
我查看了几篇关于如何实现这一点的 SO 帖子,包括:Iterate through every file in one directory 在使用
否则,使用
对于这个错误,我尝试了这篇SO帖子,但意识到我真的不能更新我的Gemfile,因为它会给我带来更多的问题。
以下是产生
我也尝试了来自这篇SO帖子下面的代码,但是出现了
我查看了几篇关于如何实现这一点的 SO 帖子,包括:Iterate through every file in one directory 在使用
Dir.glob
时,我的应用程序会在该特定页面上完全崩溃并退出服务器。否则,使用
Dir.foreach
,我得到Errno::ENOENT in StuffsController
No such file or directory @ dir_initialize
对于这个错误,我尝试了这篇SO帖子,但意识到我真的不能更新我的Gemfile,因为它会给我带来更多的问题。
以下是产生
Errno::ENOENT
的代码:@okay = Array.new
Dir.foreach("#{Rails.root}/cities/*.json") do |json_file|
@okay << JSON.parse(File.read(json_file))
end
我也尝试了来自这篇SO帖子下面的代码,但是出现了
NameError in StuffsController
undefined local variable or method `id' for # <StuffsController>
@okay = Array.new
Dir.foreach("#{Rails.root}/cities/#{id}.json") do |json_file|
@okay << JSON.parse(File.read(json_file))
end
我可以轻松读取该文件夹中的单个文件,没有任何问题:
@cities = Array.new
@json = JSON.parse(File.read('cities/AD.json'))
@json.each do |j|
if j.second.has_key?("accentcity")
@cities << j.second.select {|k,v| k == "accentcity"}
name = j.second.select {|k,v| k == "accentcity"}
City.first_or_create(name: name)
end
end
请注意,@cities
数组主要用于测试我的方法是否产生了我想要的结果。
我正在使用 Ruby on Rails 版本 4.2.6。