Rails:上传后访问图像文件
我正在编写一个Ruby on Rails 5应用程序。我刚刚学会了如何上传图片,而不使用回形针,载波或重定向。我过去曾经使用过重复函数,但是对于这个应用程序,我想学习如何去做那些第三方的宝石。这并不难。我已经成功上传了一个文件。我的问题是之后访问图像!我认为这会很简单。但不是!Rails:上传后访问图像文件
我有图像文件被上传到“/public/images/page/image.jpg”
我已经加入“/公/图片/页”在应用程序/初始化/ assets.rb资产路径
我试图直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将是正确的路径。
访问图像的正确方法是什么?刚刚上传到资产管道以外的目录?这将在开发或生产环境中工作?我真的认为这将是直截了当的。
这是我最终为有兴趣的人做的事情。
在我的控制器我这样做:
# 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/assests/images文件夹;如果在生产中他们去公共/资产/图像。
,并用直截了当IMAGE_TAG:
<%= image_tag "#{@page.image}" %>
工作就像一个魅力。至少我知道它适用于开发环境。 感谢那些回应。 (Mat和长崎)
您不必在image_tag
内提供完整的图像路径,只需将图像名称与子目录一起存在即可。
因此请尝试<%= image_tag "#{@page.image}", class: 'pic left' %>
。
请阅读有关资产管道的更多信息。 http://guides.rubyonrails.org/asset_pipeline.html
您正试图访问上传的静态图像,您不能使用资产管道。我将删除您添加到assets.rb的设置,并直接指向图像路径:'Rails.root.join('public','image','mars01.jpg').to_s' – Mat