0

所以回形针,似乎每次我使用它时都有不同的方法让它工作。

所以目前我尝试提交一个表单,但它失败并重新呈现表单(如果表单不保存,这就是它应该做的)。

这是我到目前为止的设置

宝石文件

gem "paperclip", "~> 3.0"

控制器

def new
  @post = Post.new
end

def create
 @user = current_user
 @post = @user.posts.new(params[:post])
  if @post.save
   redirect_to root_path, :notice => 'Post Successfully Created'
  else
   render :action => 'new'
  end
end

后模型

class Post < ActiveRecord::Base
  belongs_to :category
  belongs_to :user

 attr_accessible :comments, :title, :category_id, :user_id, :photo
 has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

形式

<%= form_for @post, :class => 'post-form',  :html => { :multipart => true } do |f| %>

<%= f.label :title, "Title", :class => 'title_label' %>
<%= f.text_field :title %>

<%= f.label :category_id, "Choose Category", :class => 'title_label' %>
<%= f.collection_select(:category_id, Category.all, :id, :name, :prompt => "Please Select a Category") %>

<%= f.label :comments, "Comments", :class => 'title_label'  %>
<%= f.text_area :comments %><br>

<%= f.file_field :photo %>

<%= f.submit 'Submit', :class => 'btn' %>

<% end %>

我添加照片的迁移是成功的,因为我的架构看起来像这样

create_table "posts", :force => true do |t|
t.string   "title"
t.text     "comments"
t.integer  "category_id"
t.integer  "user_id"
t.datetime "created_at",         :null => false
t.datetime "updated_at",         :null => false
t.string   "photo_file_name"
t.string   "photo_content_type"
t.integer  "photo_file_size"
t.datetime "photo_updated_at"

结尾

任何人都可以看到为什么这不能按预期工作的原因吗?

编辑

我需要安装 ImageMagick 以允许上传图像还是仅用于在视图中渲染图像?

好的,所以从评论中我开始尝试调试并将其放在我的视图中

<%= @post.errors.full_messages %>

我得到这个返回

["Photo C:/Users/RICHAR~1/AppData/Local/Temp/bitman20130724-5600-agvtgn.png is not recognized by the 'identify' command.", "Photo C:/Users/RICHAR~1/AppData/Local/Temp/bitman20130724-5600-agvtgn.png is not recognized by the 'identify' command."]

有任何想法吗?

谢谢

4

1 回答 1

1

第 1 步 来自回形针文档:

必须安装ImageMagick并且Paperclip必须可以访问它。为确保它确实如此,请在您的命令行上运行 which convert (ImageMagick 实用程序之一)。这将为您提供安装该实用程序的路径。例如,它可能会返回/usr/local/bin/convert.

然后,在您的环境配置文件中,通过将该目录添加到其路径,让 Paperclip 知道要查看那里。

development模式下,您可以将此行添加到config/environments/development.rb

Paperclip.options[:command_path] = "/usr/local/bin/"

步骤 2 对于agvtgn.png is not recognized by the 'identify' command.错误:

不知道你是如何在 Windows 中做到这一点的,对于 linux,这是你需要做的:

$ which identify
/path/to/identify

设置command_path为该路径config/environments/development.rb

Paperclip.options[:command_path] = "/path/to"

你也需要ImageMagick安装

http://ganeshprasadsr.blogspot.com/2010/12/paperclip-issue-is-not-recognized-by.html


我的想法- 你只需要安装 ImageMagick。


ps Windows 是最差的开发机器。您至少可以安装一个在 linux 上运行的虚拟机。

于 2013-07-24T10:19:12.527 回答