我查看了许多类似的问题并尝试了解决方案但没有成功。我正在使用rails 3和paperclip 3.我已经成功安装了ImageMagick作为paperclip github上的教程。
在我的模特中:
has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/profile_photo_store/missing.png"
attr_accessible :photo
在我的数据库中,我添加了以下列:
:photo_file_name, :photo_content_type, :photo_file_size, :photo_updated_at
在我的编辑视图中:
<%= form_for(@user, :url => user_path, :html => { :multipart => true }) do |f| %>
<div class="field">
<b>Add a Photo</b><br />
<%= f.file_field :photo %>
</div><br />
<% end %>
在我的节目视图中
<%= image_tag @user.photo.url(:medium) %>
我可以说这张照片正在发送,因为我看到它是通过Firebug进行的。然而,missing.png仍在显示。 paperclip在哪里保存文件?我做错了什么。
答案 0 :(得分:1)
无法解决这个问题所以我改用了载波...之后我遇到了类似的问题。使用包管理器重新安装ImageMagick而不是从解决它的源构建。显然,当从源构建时,bin文件保存在/ usr / local / bin中,我的rails应用程序无法看到。
答案 1 :(得分:0)
在Rails 3.2中,回形针附件存储在公共文件夹public / system / users / [photo or avatar ...] / ....您可以检查它们是否通过并保存。我没有在您的代码中看到任何明显的错误。您可以使用此迁移来确保:
class AddAttachmentAvatarToUsers < ActiveRecord::Migration
def self.up
add_column :users, :photo_file_name, :string
add_column :users, :photo_content_type, :string
add_column :users, :photo_file_size, :integer
add_column :users, :photo_updated_at, :datetime
end
def self.down
remove_column :users, :photo_file_name
remove_column :users, :photo_content_type
remove_column :users, :photo_file_size
remove_column :users, :photo_updated_at
end
end
您可以删除默认的照片代码,也可以将其编辑为“/ images / ...”并在公共文件夹中创建一个图像文件夹,因为这是回形针查找文件的位置。似乎回形针仍然配置为“旧”方式(所有资产都在公共文件夹中):在用户模型中
has_attached_file :photo, :styles => { :medium => "200x200>", :thumb => "60x60>" },
:default_url => "/images/default_:style_avatar.png"
如果你想要,你可以尝试写:
<%= form_for(@user) do |f| %>
...
答案 2 :(得分:0)
请检查控制器中的强参数是否接受:照片。