在Spree注册表单中添加图像

时间:2018-07-19 12:37:26

标签: ruby-on-rails ruby spree spree-auth-devise

我知道Spree使用Paperclip宝石作为图像。

但是我不知道如何在Spree注册表格中添加图像。

我试图以各种方式实现它,但仍然无法成功。

2 个答案:

答案 0 :(得分:0)

对于静态图像,只需使用Rails asset helpers

如果需要(动态)将图像保存在数据库中,则可以使用image_tagimage.attachment.url

控制器动作:

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

查看:

<%= image_tag @image.attachment.url %>

答案 1 :(得分:0)

最终我得到了答案

用户控制器

 public class ButtonBehavior : Behavior<Button>
    {
        protected override void OnAttachedTo(Button bindable)
        {
            base.OnAttachedTo(bindable);
            bindable.Clicked += Bindable_Clicked;
        }

        private void Bindable_Clicked(object sender, EventArgs e)
        {
            //Use you logic here
        }

        protected override void OnDetachingFrom(Button bindable)
        {
            base.OnDetachingFrom(bindable);
            bindable.Clicked -= Bindable_Clicked;
        }
    }

在form.html.erb 中 我添加了

    <Button Text="Click Me" HeightRequest="50" WidthRequest="80">
        <Button.Behaviors>
            <behavior:ButtonBehavior/>
        </Button.Behaviors>
    </Button>

inedit.html.erb

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