Rails / paperclip新手 - Paperclip不会保存

时间:2011-01-11 01:10:23

标签: ruby-on-rails ruby-on-rails-plugins paperclip

我对编程非常陌生,我正在尝试使用回形针将用户照片添加到我的用户记录中。可以从添加新记录表单创建记录,而不包含<%= f.file_field:photo%>行和重定向正确并将记录保存到数据库。但是,当它包含在save中时,它想要重定向到create.html.erb而不是用户路径,并且不保存新记录。它也不会显示任何错误。我已使用photo_file_name,photo_content_type和:photo_file_size字段更新了users表。此外,如果有任何帮助,我正在运行Windows。

型号:

class User < ActiveRecord::Base
  has_many :venues
  has_many :reviews
  has_attached_file :photo,
    :styles => { 
      :medium => "300x300>", 
      :thumb => "100x100>" }
end

控制器:

class UsersController < ApplicationController

  def index
    @users = User.all
  end

  def new
    @user = User.new
  end

  def create
    @user = User.create(params[:user])
    if @user.save
      flash[:notice] = 'User added'
      redirect_to users_path
    else
      @user.save
    end
  end

  def show
    @user = User.find(params[:id])
  end
end

查看:

<% form_for (@user, :html => { :multipart => true }) do |f| %>

  <p>username: <br>
  <%= f.text_field :username %></p>

  <p>password: <br>
  <%= f.text_field :password %></p>

  <p>photo: <br>
  <%= f.file_field :photo %></p>

  <%= submit_tag %>
<% end %>

非常感谢任何帮助!

开发日志中显示的内容:

  

处理UsersController #create(for   127.0.0.1 at 2011-01-12 22:05:56)[POST]参数:   { “用户”=&GT; { “照片”=&GT;#,   “用户名”=&gt; “中nghjhg”,   “password”=&gt;“ghjghj”},“commit”=&gt;“保存   变化”,   “authenticity_token”=&gt; “中IlacpnqsC / IJ + 41bx8tN4obOWPgirMx810l / WvohN68 =”}   [paperclip]识别-format%wx%h   “C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]”   2&gt; NUL [paperclip]错误是   处理时收到:

           

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png   不被'识别'识别   。命令&GT; [paperclip]识别 - 格式   WX%%H   “C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]”   2&gt; NUL [paperclip]错误是   处理时收到:

           

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png   不被'识别'识别   。命令&GT;内部渲染模板   布局/应用程序渲染   users / create在157ms完成(查看:   4,DB:0)| 200好的   [HTTP://本地主机/用户]

1 个答案:

答案 0 :(得分:3)

在回形针的文档中使用:avatar只是一个例子。在您的情况下,它应该是:photo。您需要在模型和视图文件中更改它。

修改

我刚刚注意到你控制器的这一部分:

if @user.save
  flash[:notice] = 'User added'
  redirect_to users_path
else
  @user.save # <<< here
end

这没有任何意义。如果第一次保存失败(返回false),你只是再次尝试而不改变任何东西?我怀疑该行应该是render :action => :new

编辑2

您的日志显示您的identify命令无法识别.png文件。要么你没有identify命令。你安装了ImageMagick吗?如果是这样,怎么样?