Rails Paperclip显示图像标题,而非图像

时间:2016-05-14 18:59:45

标签: ruby-on-rails image paperclip

我刚刚在我的rails应用程序上安装了Paperclip并且已经上传了一个图像,但它仍然只显示图像名称和图像图标,而不是显示实际的URL。

我的user.rb模型显示:

  has_attached_file :avatar,
  :path => ":rails_root/public/system/:attachment/:id/:style/:filename",
  :url => "/system/:attachment/:id/:style/:filename",
  :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :default_url => "/avatars/default_:style_avatar.png"

  validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/

我的users_controller.rb显示:

def create
  @user = User.create( user_params )
  ...
end

...

  private

 def user_params
   params.require(:user).permit(:avatar)
 end

我的表单/显示看起来像这样(if / else出于故障排除目的而被#ed):

<%# if current_user.avatar != nil %>
    <%= image_tag @user.avatar.url(:thumb) %>
<%# else %>
     <p>Looks a little impersonal...<br>Wanna upload a profile picture:</p>
     <%= form_for @user, url: user_path, html: { multipart: true } do |form| %>
        <%= form.file_field :avatar %>
        <%= form.submit "Upload Picture", class: "btn btn-primary" %>
     <% end %>
<%# end %>

我已检入我的schema.rb文件,并且向用户表添加:avatar的迁移成功:

create_table "users", force: :cascade do |t|
   t.string   "first_name"
   t.string   "last_name"
   t.string   "email"
   t.string   "password_digest"
   t.datetime "created_at",          null: false
   t.datetime "updated_at",          null: false
   t.integer  "role"
   t.string   "slug"
   t.string   "avatar_file_name"
   t.string   "avatar_content_type"
   t.integer  "avatar_file_size"
   t.datetime "avatar_updated_at"
end

add_index "users", ["slug"], name: "index_users_on_slug", unique: true

但是,我没有看到上传的图像被保存的任何地方。我也没有在我的initializers文件夹中看到任何相关的回形针,所以它可能与安装宝石有关?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您的图片正确上传,则必须在公共目录中复制,检查它。

您可以尝试的另一件事是,创建一个新模型,让我们说photos。他们的关联就像user, has_many :photos,并将你的头像附在照片模型中。