Rails Paperclip图像未显示在cloud9服务器上

时间:2016-06-08 19:33:11

标签: ruby-on-rails ruby ruby-on-rails-4 paperclip

我正在使用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"

静止图像未显示。

1 个答案:

答案 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