我正在从carrierwave迁移到活动存储,因此我在模型中添加了以下更改以及本文档中提到的Installation
和Configuration
更改
型号:
mount_uploader :file, PatientUploader
has_one_attached :file_new
我能够通过rake任务成功地测试更改,但现在我正试图通过上传pdf文件从UI进行测试。我也可以用视图更改来测试更改,但稍后我将删除mount_uploader更改(所有carrierwave更改(,所以我必须更新视图,因此我尝试了以下视图更改。
我更新了视图中的以下行来自
= link_to patient.name, patient.file_url, target: "_blank", class: 'external'
至
= link_to image_tag(patient.name), patient.file, target: "_blank", class: 'external'
但是我得到了错误The asset "ABCD" is not present in the asset pipeline.
我并没有在项目的任何地方设置config.assets.compile
,因为我在一些堆栈线程上看到这不是一个好的做法。
我想知道为什么我在更新视图后会出现这个错误,以及我该如何修复它?
感谢
您给image_tag
的是patient.name
,但image_tag
需要一个可行的source
:
源可以是完整路径、文件或活动存储附件。
如果patient.file
是活动存储附件:
link_to edit_patient_path(patient), target: "_blank", class: 'external' do
image_tag(patient.file)
我输入edit_patient_path(patient)
作为链接的url
,因为我不知道你想让这个链接带用户点击到哪里。
似乎在旧链接中,您使用patient.name
作为链接的主体,而url
指向patient.file_url
。
在新的链接中,你似乎希望身体是图像,但你想把它们带到的URL对我来说不清楚。
此外,您可以查看link_to
,以更好地了解以什么顺序传递什么作为变量:
link_to(名称=零,选项=零,html_options=零,&block(
注意,因为image_tag()
很复杂,所以link_to()
应该成为一个块来保持清晰。