Rails 5:没有这样的文件或目录

时间:2018-05-17 17:36:32

标签: 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 )

以下在我的控制器中

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,没有欢乐。

2 个答案:

答案 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

尝试一下,让我知道怎么回事。