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 .
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 .
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 %>
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}" %>