Rails 5: нет такого файла или каталога - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно загрузить данные 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 голосов
/ 18 мая 2018

Я думаю, вы должны сделать что-то вроде этого:

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

Попробуйте и дайте мне знать, как идут дела.

0 голосов
/ 17 мая 2018

Как видно из сообщения об ошибке, rails ищет в assests/ dir, а не в assets/csvs dir.

Попробуйте

csv = ActionController::Base.helpers.asset_path('csvs/nodes.csv')

Или вы можете просто поместить .csv в assets/ dir напрямую.

Обратите внимание, что вам никогда не нужно будет добавлять Rails.root +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...