Ruby on rails Rails 5:没有这样的文件或目录
我需要加载CSV数据并将其作为JSON提供给我的视图 我有以下文件:Ruby on rails Rails 5:没有这样的文件或目录,ruby-on-rails,Ruby On Rails,我需要加载CSV数据并将其作为JSON提供给我的视图 我有以下文件: app/assets/csvs/nodes.csv 以及config/initializers/assets.rb Rails.application.config.assets.paths << Rails.root.join("app", "assets", "csvs") Rails.application.config.assets.precompile += %w( nodes.csv ) 我在视图中得
app/assets/csvs/nodes.csv
以及config/initializers/assets.rb
Rails.application.config.assets.paths << Rails.root.join("app", "assets", "csvs")
Rails.application.config.assets.precompile += %w( nodes.csv )
我在视图中得到了这个错误
No such file or directory @ rb_sysopen - /assets/nodes-0ae0ea48564414179cf3ee3ebcd4e6471c74eabd054d20060762d471ba8d6e80.csv
如果我去:
http://localhost:3000/assets/nodes-0ae0ea48564414179cf3ee3ebcd4e6471c74eabd054d20060762d471ba8d6e80.csv
我看到了.csv文件的内容
我试过了
csv=Rails.root+ActionController::Base.helpers.asset\u path('nodes.csv')
有或没有
Rails.root
并且没有快乐。正如您在错误消息中看到的,Rails在assests/
目录中查找,而不是assets/csv
目录
试一试
或者您可以直接将.csv
放入资产/
目录中
注意:您永远不需要预先编写
Rails.root+
我认为您应该这样做:
path = "#{Rails.root}/app/assets/csvs/nodes.csv"
file = File.open(path, 'r')
rows = CSV.parse(file, headers: true)
@data = rows.to_json
尝试一下,让我知道进展如何。我尝试了这两个建议,
asset\u path('csvs/nodes.csv')
得到了一个错误“没有这样的文件或目录@rb\u sysopen-/csvs/nodes.csv”,然后我尝试将nodes.csv放在asset目录中,并使用asset\u path('nodes.csv')
得到了一个错误“没有这样的文件或目录@rb_sysopen-/assets/nodes-0ae0ea48564414179cf3ee3ebcd4e6471c74eabd054d20060762d47d47ba8d6e80.csv”谢谢!这很有帮助!我最终使用了path=“#{Rails.root}/app/assets/csvs/nodes.csv”文件=文件。读取(路径)csv=csv.new(文件,:header=>true,:header=>:converters=>:all)@data=csv.to_a.map{| row | row.to_hash}
我很高兴!如果你认为我的答案是好的,请标记为答案:)
csv = ActionController::Base.helpers.asset_path('csvs/nodes.csv')
path = "#{Rails.root}/app/assets/csvs/nodes.csv"
file = File.open(path, 'r')
rows = CSV.parse(file, headers: true)
@data = rows.to_json