向用户添加图片的回形针

paperclip adding picture to user

我想在我的 rails 应用程序中使用回形针向用户添加图片

我的表单如下所示:

    <%= form_tag :controler => "users", :action => :uploadimage, :class => "form-horizontal", html: { multipart: true }, :method => :post do |f| %>

    <input type="hidden" id="user" name="userid" value="<%= @user.id %>" />
    <div class="form-group">
      <div class="col-sm-3"></div>
      <div class="col-sm-9">
        <input type="file" name="upload[image]" required="true" class="form-control"/>
      </div>
    </div>

    <div class="form-group">
      <div class="col-sm-3"></div>
      <div class="col-sm-9">
        <input type="submit" class="btn btn-default">
        <%#= f.submit t("main.save"), :icon => :save, :onclick => "validate(); return false;" %>
      </div>
    </div>
<% end %>

上传操作如下所示:

  def uploadimage
if request.post?
  @user = User.find(params[:userid])
  if @user.update_attribute(:image, params[:image])
    flash[:notice] = t("flash.saved")
    redirect_to :action => :settings
  end
end
end

它做得很好,但在数据库中没有添加任何东西,在文件存储中也没有。

用户模型有这个:

  has_attached_file :image, styles: { small: "64x64", med: "100x100", large: "200x200" },
                :path => ":rails_root/public/uploads/:id/:filename",
                :url => "/uploads/:id/:filename"

 validates_attachment :image, :content_type => { :content_type => "image/jpg" }

数据库迁移已正确完成,所有需要的字段都已在用户中设置 table。

可能是什么问题?

问题是 params[:image] 应该是 params[:upload][:image] 因为表单中 输入字段 nameupload[image]

def uploadimage
  if request.post?
    @user = User.find(params[:userid])
    if @user.update_attribute(:image, params[:upload][:image])
      flash[:notice] = t("flash.saved")
      redirect_to :action => :settings
    end
  end
end