You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails读取JSON文件报Errno::ENOENT错误的解决求助

解决Rails中读取JSON文件时的Errno::ENOENT错误

问题根源

File.read('links.json')使用相对路径时,Rails服务器的工作目录是项目根目录,如果你的JSON文件没有放在根目录下,就会触发找不到文件的错误。

解决步骤

1. 确定JSON文件的存放位置

推荐将JSON文件放在Rails项目的标准目录中,比如:

  • db/:用于存放数据相关文件
  • config/:用于配置类文件
  • 或者自行创建data/目录专门存放这类数据文件

2. 使用Rails的绝对路径方法读取文件

用Rails.root(返回项目根目录的绝对路径)拼接文件路径,彻底避免相对路径的问题。修改后的chap3方法代码如下:

def chap3
  # 示例:假设文件放在db/links.json,根据实际路径调整
  file_path = Rails.root.join('db', 'links.json')
  data = File.read(file_path)
  datahash = JSON.parse(data)
  puts datahash.keys
  
  # 新增渲染语句,避免访问时出现模板缺失错误
  render plain: "JSON读取成功,根键为:#{datahash.keys.join(', ')}"
end

3. 额外注意事项

  • 如果使用自定义目录(如data/),要先确保该目录已在项目中创建
  • 访问chap3路由时,必须添加render语句返回响应,否则会触发Template is missing错误
  • 生产环境下需确保Rails进程拥有该文件的读取权限

内容的提问来源于stack exchange,提问作者Signor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:25:22