回形针不保存附件

2024-02-14

我是 Rails 和 Web 开发领域的新手......

我已经创建了一个用户模型,现在我正在尝试让用户能够使用回形针添加个人资料图片。

在我的用户显示页面中,用户可以单击链接打开“编辑”页面,从中可以看到要浏览的表单并选择要上传的图像。单击按钮时,它会调用“更新”操作并重定向到用户显示页面,但图像不会保存在任何文件夹中,并且图像属性(文件名、内容类型、文件大小)在数据库中仍设置为 NIL 。

  • 我已经安装并测试了 ImageMagick
  • 我已经添加了:multipart => true以形式
  • 我已经把 attr_accessible :avatar
  • 我已设置回形针选项来查找转换所在的“/usr/bin/”
  • 我已经运行了迁移
  • 我已经设置了 :url 和 :path

-在控制器中,我的更新操作是:

def update
  @user = User.find(params[:id])
  @title = "Update profile picture"
  response_to do |format|
  if @user.update_attributes(params[:user])
    format.html {redirect_to(@user, :notice => 'Profile picture loaded')}
  else
    format.html {render :action => "edit", :notice => 'Unable to load pic")}
  end
  end
 end

我的模型代码是:

class User < ActiveRecord::Base
  attr_accessor :password
  attr_accessible :name, :email, :number_of_positive_reco, :confidence_percent, :password,
                  :password_confirmation, :avatar, :avatar_file_name, :avatar_content_file, :avatar_file_size

  has_attached_file :avatar , :styles => { :medium => "300x300>", :thumb => "100x100>"},
                    :url => "/images/profiles/:attachment/:id_:style.:extension",
                    :path => ":rails_root/public/images/profiles/:attachment/:id_:style.:extension"
                   # :default_url => "/images/Default_profile_picture.png"

  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :name, :presence => true,
  :length => { :maximum => 20}
  validates :email, :presence => true,
  :format => { :with => email_regex},
  :uniqueness => {:case_sensitive => false}
  validates :password, :presence => true,
  :confirmation => true,
  :length => { :within => 6..40 }
  validates :number_of_positive_reco, :numericality => {:only_integer => true, :greater_than_or_equal_to => 0}
  validates :confidence_percent, :numericality => { :greater_than_or_equal_to => 0.0, :less_than_or_equal_to => 1.0}

  before_save :encrypt_password
  # Return true if the user's password matches the submitted password.
  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)
    return nil if user.nil?
    return user if user.has_password?(submitted_password)
  end

  def self.authenticate_with_salt(id, cookie_salt)
    user = find_by_id(id)
    (user && user.salt == cookie_salt) ? user : nil
  end

  private

  def encrypt_password
    self.salt = make_salt if new_record?
    self.encrypted_password = encrypt(password)
  end

  def encrypt(string)
    secure_hash("#{salt}--#{string}")
  end

  def make_salt
    secure_hash("#{Time.now.utc}--#{password}")
  end

  def secure_hash(string)
    Digest::SHA2.hexdigest(string)
  end

end

该表单位于 edit.html.erb 中:

<h1>
    Ajouter une photo au profil
</h1>

<%= form_for @user, :html => { :multipart => true} do |f| %>
<div class="field">  
  <%= f.label :avatar, "Upload ta photo" %>
  <br />
  <%= f.file_field :avatar %>
</div>

<div class="actions">
    <%= f.submit "Upload" %>
</div>
<% end %>

我将调试信息打印到浏览器中。点击上传后,我得到了这个:

{"commit"=>"Upload", "authenticity_token"=>"+ExcuQOSv1bxIyAoM5+N4TCSmYI8JYeh5Yb8P5W4VU0=", "_method"=>"put", "utf8"=>"✓", "action"=>"update", "id"=>"8", "controller"=>"users", "user"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0xb6d63fec @content_type="image/jpeg", @original_filename="Paperclip-Railway.jpg", @tempfile=#<File:/tmp/RackMultipart20111208-1681-3h3ps4-0>, @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"Paperclip-Railway.jpg\"\r\nContent-Type: image/jpeg\r\n">}}

所以,在日志中,我看到“回形针的字段”填充了图像名称、图像类型等...但是没有“INSERT into TABLE”,所有用户字段仍然为 NIL,即用户所在的系统目录未创建应存储的图像,没有“回形针附件保存”,日志中也没有提及回形针...

在控制台模式下,我可以创建一个新用户,将头像属性设置为:

`User.create(:avatar => File.new(Rails.root + "public/images/an_image.png")´

而且效果很好! ...我还测试了一个新文件夹的创建,没有管理员权限,它工作得很好...我很绝望:-(

谁能帮我 ?


三天后才发现这一点:由于我使用了密码保护(密码是 attr_accessor),如果不在表单中添加密码字段,就不可能更新用户。

尝试在不输入密码的情况下编辑个人资料图片是行不通的,并且没有生成可能让我思考这一点的错误消息。

因此,在编辑视图中,不要忘记在表单中添加密码字段,以便能够更新用户的图片!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回形针不保存附件 的相关文章

随机推荐

  • 新的 Firebase Facebook 登录

    我正在尝试使用新的 Firebase 平台登录 Facebook 这是 Facebook 登录的代码 let facebookLogin FBSDKLoginManager facebookLogin logInWithReadPermis
  • Python 文件关键字参数?

    在命令行中 我可以将参数传递给 python 文件 如下所示 python script py arg1 arg2 我可以找回arg1 and arg2 within script py as import sys arg1 sys arg
  • pimpl 使模板编码不那么混乱

    我正在尝试创建一个更清晰的头文件 以供头类的参考 文档使用 同时仍然认识到模板的便利性 所以我有一个快速的 h hpp 文件 mempool h namespace internal template
  • PHP 帖子名称通配符 - $_POST['var_'.*];

    是否可以使用某种通配符来创建以特定字符串开头的 POST 变量 本质上 我试图捕获任何包含 bSortable wildcard 作为名称的 POST bSortable 1 bSortable 2 bSortable 3 我正在为 jqu
  • 如何从向量创建元组?

    下面是一个示例 它分割字符串并解析每个项目 将其放入一个其大小在编译时已知的元组中 use std str FromStr fn main let some str 123 321 312 let num pair str some str
  • 如何解决 em_mysql2 的“连接仍在等待结果”错误

    我在 Goliath eventmachine 下将 activerecord 与 em mysql2 一起使用 最奇怪的事情发生在我的用户模型上 当我第一次向 users 发送 POST 时 一切正常 按预期查找 当我执行第二次 POST
  • 可以将 ASP.NET 编译为机器代码吗?

    是否可以将 ASP NET Web 应用程序编译为机器语言 如果是这样 有任何性能优势吗 是的你可以 NGen exe http msdn microsoft com en us library 6t9t5wcf aspx 这是一个 Sta
  • window.onbeforeunload 和 window.onunload 在 Firefox、Safari、Opera 中不起作用?

    在我的聊天应用程序中 当我的应用程序关闭时 我需要得到用户的确认 所以我用了window onbeforeunload用于确认警报和window onunload for logout 但这两个功能都可以在 IE 和 Chrome 中使用
  • 有什么方法可以返回对函数中创建的变量的引用吗?

    我想编写一个程序 分两步写入一个文件 在程序运行之前该文件可能不存在 文件名是固定的 问题是OpenOptions new write 可能会失败 在这种情况下 我想调用自定义函数trycreate 这个想法是创建文件而不是打开它并返回句柄
  • C 逗号运算符的使用[重复]

    这个问题在这里已经有答案了 您会看到它在 for 循环语句中使用 但它在任何地方都是合法的语法 您在其他地方发现了它的哪些用途 如果有的话 C 语言 以及 C 历史上是两种完全不同的编程风格的混合体 可以称为 语句编程 和 表达式编程 如您
  • JQuery JSONP 跨域调用不执行任何操作

    每当我通过 jquery 对我设置的任何页面 本地或服务器上 进行 JSONP 调用时 我得到的只是静默处理 Firebug 报告 200 OK 并且响应看起来没问题 我设置了成功时弹出的警报框 或者 失败但两者都没有出现 似乎无论我使用什
  • 使用 .Net 验证路径相等性

    比较 Net 中的两个路径以确定它们是否指向同一文件或目录的最佳方法是什么 如何验证它们是否相同 c Some Dir SOME FILE XXX C SOME DIR some file xxx 更好的是 有没有办法验证这些路径是否指向某
  • jQuery 动态 qtip 显示 div,但每次鼠标悬停都会变得越来越慢

    我使用 jQuery qTip 插件来显示鼠标悬停链接 img 的 div 我写了两个选项来使用 但这两个选项都造成了麻烦 V1 第一个版本仅在我第二次将鼠标移到链接上时才显示工具提示 重复将鼠标悬停在链接上后 脚本似乎变得越来越慢 6 7
  • php unlink() 非ascii字符=找不到文件[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 简短 php unlink 正在处理名称为 asci 的文件 但是 如果我尝试删除名称包括 等的文件 则会出现取消链接生
  • 无法使用ajax从数据库获取数据

    我正在开发 ASP Net MVC 应用程序 我想使用ajax从数据库获取数据 它不会在网页中加载数据 控制台窗口上也没有错误 在 Visual Studio 中也不例外 以下是我的控制器代码 HttpGet public JsonResu
  • 如何使用 HTML 进行 Skype 通话?

    我尝试在我的脚本中插入以下代码片段 通过单击该链接 它应该会呼叫 Skype 帐户 我已经找了好几个小时了 但不明白为什么它不起作用 pre code lt a href quot callTo USERNAME quot gt lt im
  • 市场上的 Github Actions 可以做恶意的事情吗?

    我是 GitHub Actions 的绝对初学者 市场上有可用的操作 这些操作是否可以对我的存储库进行恶意操作 例如 删除我的仓库 将恶意代码提交到我的存储库中 从私人存储库复制内容 答案是 不幸的是 YES 您可以在这里找到一些参考 使用
  • 使用PHPExcel制作自动生成excel文件

    我想让我的 Excel 文件填充从数据库中获取的一些数据 例如某人的姓名和年龄 假设我的数据库中有 10 个人 我希望将这 10 个人包含在我的 Excel 文件中 所以基本上 你会得到 姓名年龄 人1 20岁 人2 25岁 等等 我知道如
  • JavaScript 函数返回 TYPE BOOLEAN 的变量名称,而不是模板文字中的值本身 [重复]

    这个问题在这里已经有答案了 javascript 中是否有一个函数 我可以将变量 而不是值 设置为像 parseVariableName 这样的字符串 例如 在我的场景中 我想要使用布尔变量有一个 动态类名不创建对象 将其作为数组并循环 我
  • 回形针不保存附件

    我是 Rails 和 Web 开发领域的新手 我已经创建了一个用户模型 现在我正在尝试让用户能够使用回形针添加个人资料图片 在我的用户显示页面中 用户可以单击链接打开 编辑 页面 从中可以看到要浏览的表单并选择要上传的图像 单击按钮时 它会