我正在使用paperclip将图像上传到cloud9虚拟环境(ubuntu)上的rails应用程序。有一个电影模型,每个电影对象都有一个与之关联的图像。
class Movie < ActiveRecord::Base
belongs_to :user
belongs_to :category
has_attached_file :movie_img, styles: { medium: "250x350>", thumb: "325x475>" }, default_url: "/images/style/missing.png"
validates_attachment_content_type :movie_img, content_type: '/\Aimage\/.*\Z/'
end
视图如下所示
<% @movies.each do |movie| %>
<%= image_tag movie.movie_img.url(:movie_index), class: "movie" %>
<% end %>
但图片没有显示在网站上。
生成的html中图像的路径如下所示
系统/电影/ movie_imgs / 000/000/010 / movie_index / fileName.jpg?1465401579 正如我从Cloud9的文件浏览器中看到的那样,图像存在于实际目录中。
当我打开此图像地址时,它会显示以下错误。
没有路由匹配[GET]“/system/movies/movie_imgs/000/000/011/movie_index/fileName.png”
同样在config / environments / development.rb中,我编写了以下代码行
Paperclip.options[:command_path] = "/usr/bin/"
因为当我在终端输入哪个转换时,会显示以下内容。
的/ usr / bin中/转换
我哪里错了?如何使图像显示在服务器中?
修改 我还生成了必要的迁移,我的电影表就像这样。
create_table "movies", force: :cascade do |t|
t.string "title"
t.text "description"
t.string "director"
t.date "release_date"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "category_id"
t.string "movie_img_file_name"
t.string "movie_img_content_type"
t.integer "movie_img_file_size"
t.datetime "movie_img_updated_at"
端
静止图像未显示。
答案 0 :(得分:0)
您似乎正在声明一个视图帮助程序,用于调整未在Movie模型中定义的图像(:movie_index)。
您需要在模型中声明帮助器和:movie_index的大小:
class Movie < ActiveRecord::Base
belongs_to :user
belongs_to :category
has_attached_file :movie_img, styles: { movie_index: "300x300>" medium: "250x350>", thumb: "325x475>" }, default_url: "/images/style/missing.png"
validates_attachment_content_type :movie_img, content_type: '/\Aimage\/.*\Z/'
end
修改强>
确保您已经生成了必要的迁移:
rails g paperclip Movie movie_img
请务必阅读Paperclip documentation。