Rails 回形针显示图像标题,而不是图像

Rails Paperclip Displaying Image Title, Not Image

我刚刚在我的 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

我的 form/display 看起来像这样(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 添加到用户 table 的迁移已成功:

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 文件夹中也没有看到任何与回形针相关的东西,所以它可能与 gem 的安装有关?任何帮助将不胜感激。

如果您的图片上传正确,它们必须复制到您的 public 目录中,请检查它。

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