Ruby on rails 如何获取存储在rails控制器的活动存储中的附件的url
如何获取存储在rails控制器的活动存储中的has_one模型附件的url。所以,我可以将它作为完整的链接发送给json中的api。 到目前为止,我尝试了以下方法,但每种方法都会带来各种问题:Ruby on rails 如何获取存储在rails控制器的活动存储中的附件的url,ruby-on-rails,ruby,rails-api,rails-activestorage,ruby-on-rails-5.2,Ruby On Rails,Ruby,Rails Api,Rails Activestorage,Ruby On Rails 5.2,如何获取存储在rails控制器的活动存储中的has_one模型附件的url。所以,我可以将它作为完整的链接发送给json中的api。 到目前为止,我尝试了以下方法,但每种方法都会带来各种问题: current_user.image.service_url——未定义的方法“service_url”用于#我没有使用rails活动存储,但我在文档中阅读的内容可能会对您有所帮助 尝试rails\u blob\u url(model.image) 有关更多信息,我可以使用以下工具在浏览器中查看图像: &l
current_user.image.service_url
——未定义的方法“service_url”用于#我没有使用rails活动存储,但我在文档中阅读的内容可能会对您有所帮助
尝试rails\u blob\u url(model.image)
有关更多信息,我可以使用以下工具在浏览器中查看图像:
<%= link_to image_tag(upload.variant(resize: "100x100")), upload %>
其中,upload
是一个附加图像。对于控制器和模型中的附件,使用方法rails\u blob\u path
例如,如果您需要在控制器中分配一个变量(例如,cover\u url
),首先您应该包括url\u helpers
和使用后方法rails\u blob\u path
。你可以在任何模特、工人等身上做同样的事情
完整示例如下:
class ApplicationController < ActionController::Base
include Rails.application.routes.url_helpers
def index
@event = Event.first
cover_url = rails_blob_path(@event.cover, disposition: "attachment", only_path: true)
end
end
class ApplicationController
有时,例如,API需要返回客户端(如手机等)的完整url和主机/协议。在这种情况下,将主机参数传递给所有rails\u blob\u url调用是重复的,不是干巴巴的。甚至,您可能需要在dev/test/prod中进行不同的设置才能使其正常工作
如果您正在使用ActionMailer,并且已经在environments/*.rb中配置了该主机/协议,则可以使用rails\u blob\u url
或rails\u representation\u url
重用该设置
#在config/environments/*.rb中,您可能已经在配置ActionMailer
config.action\u mailer.default\u url\u options={host:'www.my-site.com',protocol:'https'}
我建议只调用完整的Rails.application.url\helpers.Rails\u blob\u url
,而不是将至少50个方法转储到模型类中(取决于routes.rb),因为您只需要2个
classmymodel”)
Rails.application.routes.url\u helpers.Rails\u表示\u url(
变体,
Rails.application.config.action\u mailer.default\u url\u选项
)
结束
#链接到原始blob完整url
def徽标_blob_url
Rails.application.routes.url\u helpers.Rails\u blob\u url(
logo.blob,
Rails.application.config.action\u mailer.default\u url\u选项
)
结束
结束
为了进一步澄清,我想在api的json响应中发送图像链接,这样我就可以在移动应用程序上显示它。您是否可以打印完整的错误消息:>1)current_user.image.service_url----未定义的方法'service_url',该方法也不可用。rails_disk_blob_url生成链接,但这是一个奇怪的链接,导航到该链接时也会出现以下错误:(nil:NilClass的未定义方法'verified'):activestorage(0.1)lib/active_storage/verified_key_with_expiration.rb:10我建议您阅读文档,因为您在实现它时可能会遇到一些问题,另外,请检查您是否已将图像附加到该用户。谢谢,我一定会在fresh project上试用它,如果在apirails\u blob\u path
中发现任何我想使用的内容,我会返回此线程。我不接受变体。我在rails 5.2中使用了rails\u表示法\u url(variant\u或\u blob,disposition:“attachment”,only\u path:true)
,它似乎接受常规blob或variant。