Bai*_*aig 8 ruby-on-rails ruby-on-rails-5.1
我有一个项目正在轨道上5.1.2,我正在尝试在其上实现Active Storage,在线上的几个教程我能够设置Active Storage,我可以看到数据被保存在active_storage_blobs和active_storage_attachments表中.
我也通过跑步确认user.avatar.attached?并且作出回应我得到了真实所以事情正在发挥作用.
我遇到的问题是在视图中显示图像,我试过了
<%= image_tag(url_for(user.avatar)) %>
Run Code Online (Sandbox Code Playgroud)
NoMethodError:未定义的方法`active_storage_attachment_path'
我做了什么来设置Active Storage
跑完安装命令
rails active_storage:install
Run Code Online (Sandbox Code Playgroud)
这给出了错误不知道如何构建任务'active_storage:install'
但以下命令有效
rails activestorage:install
Run Code Online (Sandbox Code Playgroud)
我已经添加了gem 'activestorage'内部gemfile
这就是我的内心 storage_services.yml
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
Run Code Online (Sandbox Code Playgroud)
在我的内心我development.rb添加了
config.active_storage.service = :local
Run Code Online (Sandbox Code Playgroud)
在我的User模型里面我添加了has_one_attached :avatar
在更新控制器内部,我添加了附件代码
user.avatar.attach(params[:user][:avatar])
Run Code Online (Sandbox Code Playgroud)
但我无法显示它,
我在这里错过了什么?要让图像在视图中显示,我需要做什么?为什么我会收到此错误
NoMethodError:未定义的方法`active_storage_attachment_path'
config/appication.rb如果您添加了以下行,您能否检查您的文件:
require "active_storage/engine"
Run Code Online (Sandbox Code Playgroud)
我建议你升级你的 rails 版本,5.2 beta因为它已经与 Active Storage gem 合并了。如果您的应用程序具有良好的测试覆盖范围,您现在就可以做到。从 5.1 到 5.2 没有太多变化,请参阅http://edgeguides.rubyonrails.org/5_2_release_notes.html。但它还不稳定,所以你需要检查你是否可以承担这个风险。
你做错了,你需要替换下面的代码
<%= image_tag(url_for(user.avatar)) %>
Run Code Online (Sandbox Code Playgroud)
和
<%= image_tag(user.avatar) %>
Run Code Online (Sandbox Code Playgroud)
url_for 用于生成精确的 url 而不是图像标签。
| 归档时间: |
|
| 查看次数: |
4086 次 |
| 最近记录: |