我需要加载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 )
以下在我的控制器中
require 'csv'
require 'json'
csv = Rails.root + ActionController::Base.helpers.asset_path('nodes.csv')
csv_data = File.read(csv)
@data = CSV.parse(csv_data).to_json
我在视图中收到此错误
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_path('nodes.csv')
有和没有Rails.root
,没有欢乐。
答案 0 :(得分:0)
正如您在错误消息中看到的那样,rails正在查看assests/
目录,而不是assets/csvs
目录。
尝试
csv = ActionController::Base.helpers.asset_path('csvs/nodes.csv')
或者您可以直接将.csv
放在assets/
目录中。
请注意,您永远不需要添加Rails.root +
答案 1 :(得分:0)
我认为你应该这样做:
path = "#{Rails.root}/app/assets/csvs/nodes.csv"
file = File.open(path, 'r')
rows = CSV.parse(file, headers: true)
@data = rows.to_json
尝试一下,让我知道怎么回事。