我刚刚在我的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
文件夹中看到任何相关的回形针,所以它可能与安装宝石有关?任何帮助将不胜感激。
答案 0 :(得分:0)
如果您的图片正确上传,则必须在公共目录中复制,检查它。
您可以尝试的另一件事是,创建一个新模型,让我们说photos
。他们的关联就像user, has_many :photos
,并将你的头像附在照片模型中。