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
,并在照片模型中附上你的头像。
我刚刚在我的 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
,并在照片模型中附上你的头像。