带有图片上传器的多步骤表单 [英] Multi step form with image uploader

查看:77
本文介绍了带有图片上传器的多步骤表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要在第2步上使用头像上传来建立3步用户注册.因此,我遵循Ryan Bates的指南 http://railscasts.com/episodes/217-multistep-forms .我正在使用CarrierWave gem处理上传.但似乎我无法在用户会话中存储上载的文件信息(我无法转储文件错误).我在控制器中使用以下技术

I want to build 3 step user registration with avatar uploading on 2nd step. So i follow Ryan Bates's guide http://railscasts.com/episodes/217-multistep-forms . I'm using CarrierWave gem to handle uploads. But it seems like i can't store uploaded file info in user session (i'm getting can't dump File error). I use following technique in controller

if params[:user][:img_path]
  @uploader = FirmImgUploader.new
  @uploader.store!(params[:user][:img_path])
  session[:img] = @uploader
  params[:user].delete(:img_path)
end

实际上有帮助.但是,当我上传禁止的文件类型时,此行的所有操作都会崩溃

It actually helps. But when i upload forbidden file type everything's crashes on this line

@uploader.store!(params[:user][:img_path])

出现此错误

CarrierWave::IntegrityError in UsersController#create
You are not allowed to upload "docx" files, allowed types: ["jpg", "jpeg", "gif", "png"]

代替正常的表单验证错误.

instead of normal form validation error.

我该如何解决这个问题?谢谢!

How can i solve this problem ? Thanks !

推荐答案

实际上我已经解决了我的问题.这是使用载波上传文件的多步骤表单的工作代码

Actually I solved my problem. Here's working code for multistep forms with file uploading using carrierwave

if params[:user][:img_path]
  @uploaded = params[:user][:img_path]
  params[:user].delete(:img_path)
end
session[:user_data].deep_merge!(params[:user]) if params[:user]
@user = User.new(session[:user_data])    

if @uploaded
  # here how validation will work
  @user.img_path = @uploaded
end
@user.current_stage = session[:register_stage]
if @user.valid?
  if @user.last_stage?
    @user.img_path  = session[:img] if @user.last_stage?
    @user.save
  else  
    @user.next_stage
  end
  # now we can store carrierwave object in session
  session[:img] = @user.img_path
  session[:register_stage] = @user.current_stage
end

这篇关于带有图片上传器的多步骤表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆