【问题标题】:New to Rails/paperclip - Paperclip wont saveRails/Paperclip 新手 - Paperclip 无法保存
【发布时间】:2011-01-11 01:10:23
【问题描述】:

我对编程非常陌生,我正在尝试使用回形针将用户照片添加到我的用户记录中。可以在没有 行的情况下从添加新记录表单创建记录,并正确重定向并将记录保存到数据库中。但是,当它包含在保存中时,它希望重定向到 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 %>

非常感谢任何帮助!

开发日志中显示的内容:

处理用户控制器#create(对于 127.0.0.1 在 2011-01-12 22:05:56) [POST] 参数: {"用户"=>{"照片"=>#, "用户名"=>"nghjhg", "密码"=>"ghjghj"}, "提交"=>"保存 变化”, "authenticity_token"=>"IlacpnqsC/iJ+41bx8tN4obOWPgirMx810l/WvohN68="} [回形针] 识别-格式 %wx%h “C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png[0]” 2>NUL [回形针] 错误是 处理时收到:

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png 未被“识别”识别 命令。> [回形针] 识别 - 格式 %wx%h “C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png[0]” 2>NUL [回形针] 错误是 处理时收到:

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png 未被“识别”识别 命令。> 内的渲染模板 布局/应用程序渲染 users/create 在 157 毫秒内完成(查看: 4、数据库:0)| 200 好 [http://localhost/users]

【问题讨论】:

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


    【解决方案1】:

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

    编辑

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

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

    这没有任何意义。如果第一次保存失败(返回 false),您只是再次尝试而不更改任何内容?我怀疑那行应该是render :action =&gt; :new

    编辑 2

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

    【讨论】:

    • 感谢您的回答,只是注意到我的问题有误。我迁移了带有 avater_file_name、avater_content_type 和 avatar_file_size 字段的用户表,而不是照片抱歉。它现在返回“用户模型缺少 'photo_file_name' 所需的 attr_accessor”。我已经用“照片”重新迁移了,它又变成了不保存。
    • Erm,您已将表列名称更改为使用avatar_* 而不是photo_*,但您还更新了您的问题以使用has_attached_file :photo 而不是has_attached_file :avatar。做好决定!是哪个?
    • 抱歉,这是我最初的问题中的一个错误,我已将 User 表中的所有内容都更改为 photo_,并且我的模型、控制器和视图如下所示。
    • 您的问题中仍然提到了头像,但是好的,您已在应用程序中删除了所有提及它的内容。那么,有什么改变吗?您是否正在跟踪您的开发日志文件?回形针应该记录它正在做什么(或试图做什么)。
    • 感谢您的指点,我已在帖子底部的开发日志中添加了显示的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    相关资源
    最近更新 更多