Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取存储在rails控制器的活动存储中的附件的url_Ruby On Rails_Ruby_Rails Api_Rails Activestorage_Ruby On Rails 5.2 - Fatal编程技术网

Ruby on rails 如何获取存储在rails控制器的活动存储中的附件的url

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

如何获取存储在rails控制器的活动存储中的has_one模型附件的url。所以,我可以将它作为完整的链接发送给json中的api。 到目前为止,我尝试了以下方法,但每种方法都会带来各种问题:


  • 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上试用它,如果在api
    rails\u blob\u path
    中发现任何我想使用的内容,我会返回此线程。我不接受变体。我在rails 5.2中使用了
    rails\u表示法\u url(variant\u或\u blob,disposition:“attachment”,only\u path:true)
    ,它似乎接受常规blob或variant。