【问题标题】:PaperClip Saving Issue回形针保存问题
【发布时间】:2014-04-28 11:51:09
【问题描述】:

这是我的模特

class User < ActiveRecord::Base
  has_attached_file :profpic, 
                    :styles => { :medium => "300x300>", :thumb => "100x100>" }, 
                    :default_url => "/assets/blonde_user.png"
  validates_attachment_content_type :profpic, :content_type => /\Aimage\/.*\Z/ 

这是我的控制器方法

def uploadpic
  p "=========================+++++++++++++++"
  p params["user"]["profpic"]  
  # current_user.profpic  = params["user"]["profpic"]
  # current_user.profpic_file_name = params["user"]["profpic"]
  p "================================="  
  p params
  p params[:user]
  current_user.profpic = params["user"]["profpic"]
  current_user.save
  p "=================================="
  redirect_to "/profile"

  end

我的看法是这样的

<div class="picture">
                    <%= form_for current_user, :url => '/uploadpic', :html => { :multipart => true } do |form| %>
                    <%= form.file_field :profpic %>
                        <%= image_tag current_user.profpic.url %>
                    <% end %>
                </div>

在提交此表单时,我遇到了类似的错误

Paperclip::AdapterRegistry::NoHandlerError in ProfilesController#uploadpic

在我的终端中,我得到了所有打印语句的输出,例如

 Parameters: {"utf8"=>"✓", "authenticity_token"=>"9J2MdO7Ok1sfP13n6R97so1W/HRI0RiDsHJYiOy6B4Q=", "user"=>{"profpic"=>"n.jpg"}}
  User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
"=========================+++++++++++++++"
"n.jpg"
"================================="
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"9J2MdO7Ok1sfP13n6R97so1W/HRI0RiDsHJYiOy6B4Q=", "user"=>{"profpic"=>"n.jpg"}, "controller"=>"profiles", "action"=>"uploadpic"}
{"profpic"=>"n.jpg"}
Completed 500 Internal Server Error in 4ms

帮助。

【问题讨论】:

  • 您的 profpic 参数似乎是一个字符串而不是一个正确的类。确保表单标记中有multipart 属性。
  • 这是您的全部观点,还是部分观点?如果它是部分的,那么请确保任何包装表单元素都有 multipart: true 作为 html 选项。
  • 你能分享schema.rb文件中users表的架构吗?将其添加到问题中。

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


【解决方案1】:

您应该将 GET 更改为 POST。 GET 通常出现在 form_for 标签中。改成POST就可以了。

    <%= form_for current_user, :url => '/uploadpic', :html => { :multipart => true, :method => 'POST' } do |form| %>

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 2011-08-09
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多