0

我已经查看了许多类似的问题并尝试了没有成功的解决方案。我正在使用 rails 3 和 paperclip 3。我已经成功安装了 ImageMagick,如回形针 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 仍在显示。回形针在哪里保存文件?我究竟做错了什么。

4

3 回答 3

1

无法解决这个答案,所以我切换到carrierwave ......之后我遇到了类似的问题。使用包管理器重新安装 ImageMagick,而不是从解决它的源代码构建。显然,当从源代码构建时,bin 文件保存在 /usr/local/bin 中,而我的 rails 应用程序看不到。

于 2012-06-07T12:30:15.167 回答
0

请检查控制器中的 strong 参数是否接受 :photo。

于 2015-01-20T00:00:20.027 回答
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| %>
...
于 2012-05-30T22:31:32.583 回答