Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5:没有这样的文件或目录_Ruby On Rails - Fatal编程技术网

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

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 ) 我在视图中得

我需要加载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 )
我在视图中得到了这个错误

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