【问题标题】:Rails: Accessing image files after being uploadedRails:上传后访问图像文件
【发布时间】:2017-05-14 16:29:01
【问题描述】:

我正在编写一个 Ruby on Rails 5 应用程序。我刚刚学会了如何在不使用回形针、载波或重新归档的情况下上传图像。我过去使用过 refile,但对于这个应用程序,我想学习如何在没有那些第三方 gem 的情况下做到这一点。这并不难做到。我已成功上传文件。我的问题是之后访问图像!我认为这会很简单。但不是!

我有图片文件正在上传到“/public/images/page/image.jpg”

我已在 app/initializers/assets.rb 中的资产路径中添加了“/public/images/page”

我尝试过这样的直接 img 标签:

<img class="pic left" src="/public/images/page/mars01.jpg" alt="Mars01" />

我收到“(没有路线匹配 [GET] “/public/images/page/mars01.jpg”)”错误。 我试过了:

<%= image_tag "/public/images/page/#{@page.image}", class: 'pic left' %>

与标签基本相同,得到相同的结果。也试过了:

<img class="pic left" src='<%= image_path "#{@page.image}" %>' />

仍然出现路由错误,但只查看“/images”目录。我仍处于开发模式,所以我认为 image_path 将是正确的路径。

访问刚刚上传到资产管道之外的目录的图像的正确方法是什么?这将在开发或生产环境中工作吗?我真的认为这将是直截了当的。

【问题讨论】:

  • 您正在尝试访问上传的静态图片,您无法使用资产管道。我将删除您添加到 assets.rb 的设置并直接指向图像路径:Rails.root.join( 'public', 'image', 'mars01.jpg' ).to_s

标签: ruby-on-rails image upload asset-pipeline


【解决方案1】:

您不必在image_tag 中提供图像的完整路径,您只需提供图像名称以及子目录(如果存在)。

所以试试&lt;%= image_tag "#{@page.image}", class: 'pic left' %&gt;

请阅读更多关于资产管道的信息。 http://guides.rubyonrails.org/asset_pipeline.html

【讨论】:

    【解决方案2】:

    这是我最终为任何感兴趣的人所做的。

    在我的控制器中我这样做了:

    # default to development go to app/assets/images
    path = Rails.root.join('app', 'assets', 'images', uploaded_io.original_filename)
    if ENV['RAILS_ENV'] == 'production'
      # change only if in production to public/assets/images
      Rails.root.join('public', 'assets', 'images', uploaded_io.original_filename)
    end
    File.open(path, 'wb') do |file|
      file.write(uploaded_io.read)
    end
    

    基于 RAILS_ENV;如果开发,图像将进入 app/assets/images 文件夹;如果在生产中,它们会转到公共/资产/图像。

    并使用直接的 image_tag:

    <%= image_tag "#{@page.image}" %>
    

    工作就像一个魅力。好吧,至少我知道它在开发环境中有效。 感谢那些做出回应的人。 (马特和长崎)

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 2013-11-27
      • 2012-02-29
      • 2014-08-18
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多