我要设置一个帐户配置文件系统,并修复未定义的方法`path_for'我想在我的Rails应用程序中使用active_storage支持头像。 我期望看到我的头像,但我得到了这个broken_pics
如果我在其他标签页中打开图片,他会向我发送此app / controllers / active_storage / disk_controller.rb第10-17行:
def show
if key = decode_verified_key
serve_file disk_service.path_for(key[:key]), content_type: key[:content_type], disposition: key[:disposition]
else
head :not_found
end
结束
问题来自此行或serve_file disk_service.path_for(key[:key]), content_type: key[:content_type], disposition: key[:disposition]
答案 0 :(得分:3)
我们只是遇到了同样的问题。原来ActiveStorage :: DiskController#show的实现已从Rails 5.2.1更改为Rails 5.2.2。参见5.2.1与5.2.2
active_storage-postgresql
宝石依赖于Rails 5.2.1的行为。看起来好像有一个PR that has just been merged to fix this,所以我希望很快会有一个新版本的gem来恢复Rails的兼容性。请密切注意https://rubygems.org/gems/active_storage-postgresql。
作为临时解决方案,我们添加了一个控制器操作,例如通过send_file
下载blob。
def download_file
attachment = ActiveStorage::Attachment.find(params[:id])
file = attachment.blob
data = file.download
send_data(data, type: file.content_type, filename: file.filename, disposition: "inline")
end
# then call like
download_file_path(model.file.id)
答案 1 :(得分:0)
@ user10981734的答案对我有用。实际上,我可以将其简化为更简洁的内容:
file = ActiveStorage::Attachment.find(params[:id]).blob
send_data(
file.download,
type: file.content_type,
filename: File.basename(file.filename.to_s)
)