Rails接入Amazon S3上传图片时storage.yml YAML语法错误求助
报错根因
该报错核心为storage.yml的YAML语法不合法:被取消注释的行本身是框架提供的提示文本,不属于可生效的YAML配置项,去掉注释标记#后这行内容不符合YAML要求的键: 值结构,因此解析时触发“找不到预期的':'”错误,和缩进、空格无关联。
解决方案
- 第一步:修正
storage.yml内容
要么给那行提示文本重新加回#变回注释,要么按照合法结构编写S3配置,标准S3配置段参考如下:amazon: service: S3 access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> region: 你的AWS区域编码 bucket: 你创建的S3存储桶名称 - 第二步:确认AWS凭证配置正确
执行rails credentials:edit命令,确保凭证文件中存在如下配置段:aws: access_key_id: 你的AWS access_key_id secret_access_key: 你的AWS secret_access_key - 第三步:确认环境配置匹配
检查当前运行环境对应的配置文件(config/environments/development.rb/production.rb),确保Active Storage配置指向S3:config.active_storage.service = :amazon - 可选校验项:确认模型关联和参数许可正确
产品模型中需声明has_one_attached :image_url,同时product_params方法中已将image_url加入许可列表。
内容的提问来源于stack exchange,提问作者Sneha Bhamra
相关产品推荐
相关产品推荐

