在我看来,我可以在弹出窗口中以Active Storage显示附加到模型的文件:
DownloadProfilePic() { ;
var url = this.ProfilePic.nativeElement.src
window.open(url);
}
运行良好。
问题是当我想在链接中使用变体时:
<a href="<%= rails_blob_path(@image.file, disposition: 'inline') %>" rel="example_group"><%= image_tag @image.variant('small') %></a>
使用的变体代码是:
<a href="<%= url_for(@image.variant('high')) %>" rel="example_group"><%= image_tag @image.variant('small') %></a>
链接似乎很好,但是当我单击图像时,该图像没有像以前一样在JS弹出窗口中打开,而是在新的浏览器窗口中打开。这很奇怪。
我缩短了链接。
file.variant(resize:size).processed.service_url
是“内容处理”问题吗?
答案 0 :(得分:0)
好吧,这就是我所做的:
在我的图片模型中,我添加了一个动作并使用了url_helpers中的rails_representation_url()方法:
include Rails.application.routes.url_helpers#对此需要
include Rails.application.routes.url_helpers
def get_variant(version="high", disposition="attachment")
variant = file_variant(version)
return rails_representation_url(variant, only_path: true, disposition: disposition)
end
在我的html中,我可以使用附件处置调用我的方法:
<a href="<%= @image.get_variant('high', 'attachment') %>" rel="example_group">
我还可以直接从控制器下载图像变体:
def download
redirect_to @image.get_variant('high', 'attachment')
end
如果只想在浏览器窗口中显示变体,则可以使用'inline':
redirect_to @image.get_variant('high', 'inline')
不确定这是最好的选择,但是它可以工作。