0

I know that Spree uses Paperclip gem for Images.

But i didn't know how we can add image in the Spree Sign Up Form.

I tried to implement it in various ways but Still i can't succeed .

2 Answers2

0

For a static image, just use Rails asset helpers.

If you need to save the image in the database (dynamic), you can use an image_tag plus image.attachment.url:

Controller action:

@image = Spree::Image.find(...)

View:

<%= image_tag @image.attachment.url %>
elhil
  • 101
  • 1
  • 5
0

finally i got the answer

user controller

def create

    @user = Spree.user_class.new(user_params)
     if params[:user][:image_file].present?
      uploaded_io = user_params[:image_file]
     path = Rails.root.join('app', 'assets', 'images', uploaded_io.original_filename)
     File.open(path, 'wb') do |file|
     file.write(uploaded_io.read)
     end
     @user.image_file = uploaded_io.original_filename
      end
      Rails.logger.info("MYSTOREID: #{params[:user][:store_id]}")
      Rails.logger.info("MYPARAMS: #{user_params}")
    if@user.save
      flash[:success] = flash_message_for(@user, :successfully_created)
      redirect_to edit_admin_user_path(@user)
    else
      render :new
    end
  end

def update
        if params[:user][:password].blank? && params[:user][:password_confirmation].blank?
          params[:user].delete(:password)
          params[:user].delete(:password_confirmation)
        end
         if params[:user][:image_file].present?
        uploaded_io = params[:user][:image_file]
         path = Rails.root.join('app', 'assets', 'images', uploaded_io.original_filename)
         File.open(path, 'wb') do |file|
         file.write(uploaded_io.read)
         end
         @user.image_file = uploaded_io.original_filename      
         end
          @user.first_name = params[:user][:first_name]
          @user.last_name = params[:user][:last_name]
          @user.organization_name = params[:user][:organization_name]
          @user.phone_number = params[:user][:phone_number]
          @user.email = params[:user][:email]
         if @user.save(validate: false)     
          flash[:success] = Spree.t(:account_updated)
          redirect_to edit_admin_user_path(@user)
        else
          render :edit
        end
      end

In form.html.erb i added

 <%= f.file_field :image_file, class: 'form-control' %>

in edit.html.erb

 <%= image_tag "#{@user.image_file}" %>