ruby-on-rails - Rails 5:没有这样的文件或目录
问题描述
我需要加载 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
,没有快乐。
解决方案
我认为你应该这样做:
path = "#{Rails.root}/app/assets/csvs/nodes.csv"
file = File.open(path, 'r')
rows = CSV.parse(file, headers: true)
@data = rows.to_json
试试看,让我知道进展如何。
推荐阅读
- javascript - 如何修复未捕获的 ReferenceError:未定义 TimelineMax
- mongodb - 组织包含不同帐户类型的 MongoDB 数据库
- apache-flink - 如何在 Flink 中附加到文件接收器
- c - SDCC 生成不必要的除以零
- android - 全屏模式 Android Studio 顶部有黑色条纹
- nginx - Nginx Ingress session-cookie-expires 在 kubernetes 中不起作用
- installation - 如何强制 SQL Server Management Studio 使用 64 位导入向导以避免错误:Microsoft.ACE.OLEDB.12.0 提供程序未注册
- javascript - 为什么移动导航栏不滚动
- amazon-web-services - AWS 保持站点到站点 VPN 连接处于活动状态
- python - 试图总结 Python 列表