首页 > 解决方案 > 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,没有快乐。

标签: ruby-on-rails

解决方案


我认为你应该这样做:

path = "#{Rails.root}/app/assets/csvs/nodes.csv"
file = File.open(path, 'r')
rows = CSV.parse(file, headers: true)
@data = rows.to_json

试试看,让我知道进展如何。


推荐阅读