Upload base64 Image with Paperclip - Rails 4 -
i relatively new rails , appreciate help.
my website accepts signature image in base64 format , trying use paperclip adaptor decode image , save form model :signature attribute. using advice given here (and here) advises use following code:
in model:
class thing has_attached_file :image in controller:
def create image = paperclip.io_adapters.for(params[:thumbnail_data]) image.original_filename = "something.gif" thing.create!(image: image) ... end my assumption thing.create! setting value of paperclip's model attribute :image value of image variable whilst creating , saving new thing object. tried implement same code in formscontroller (create action) before @form.save, receiving error:
undefined method `before_image_post_process' #<class:0x007f94a2a26de8> my formscontroller:
class formscontroller < applicationcontroller before_action :logged_in_user before_action :admin_user, only: :destroy def index @forms = form.all #paginate end def show @form = form.find(params[:id]) end def new @form = form.new end def create @form = form.new(form_params) # paperclip adaptor signature = paperclip.io_adapters.for(params[:base64]) signature.original_filename = "something.png" # attempt submit image through paperclip @form.signature = signature if @form.save flash[:success] = "the form has been created!" redirect_to @form else render 'new' end end def edit @form = form.find(params[:id]) end def update @form = form.find(params[:id]) if @form.update_attributes(form_params) flash[:success] = "form has been updated!" redirect_to @form else render 'edit' end end def destroy form.find(params[:id]).destroy flash[:success] = "form deleted" redirect_to forms_path end private def form_params params.require(:form).permit(:first_name, :last_name, :email, :phone, :address, :member_type, :base64) end end this form model:
class form < activerecord::base has_attached_file :signature validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"] end
assuming you're using rails form helpers on in view, , based on form_params list, :base64 key won't @ top level of params hash, rather 1 level down @ params[:form][:base64]
Comments
Post a Comment