【发布时间】:2016-05-14 18:59:45
【问题描述】:
我刚刚在我的 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 文件夹中也没有看到任何与回形针相关的内容,所以也许它与 gem 的安装有关?任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails image paperclip