我知道Spree使用Paperclip宝石作为图像。
但是我不知道如何在Spree注册表格中添加图像。
我试图以各种方式实现它,但仍然无法成功。
答案 0 :(得分:0)
对于静态图像,只需使用Rails asset helpers。
如果需要(动态)将图像保存在数据库中,则可以使用image_tag
加image.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