Pergunta

Eu estou tentando criar um formulário personalizado para um terceiro papel na Farra 2.3 (Designer).O designer cria um novo produto, e a variante e, em seguida, envia uma imagem para essa variante.Meus esforços têm sido em vão.

Como posso criar um novo ativo para uma variante?

Erro

ActiveRecord::UnknownAttributeError in Designers::SpreeAssetsController#create
unknown attribute: attachment
Extracted source (around line #11):
def create      
  @asset = Spree::Asset.new(asset_params) #line 11
  ...
end

Pedido parâmetros

{"utf8"=>"✓",
"authenticity_token"=>"XXX=",
"asset"=>{"attachment"=>#<ActionDispatch::Http::UploadedFile:0x0000010f6c34b8 @tempfile=#<Tempfile:/var/folders/xk/r14w_thd2bn8vxch294zzn040000gn/T/RackMultipart20140731-5542-fgfzhn>,
@original_filename="DSCN0220.JPG",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"asset[attachment]\"; filename=\"DSCN0220.JPG\"\r\nContent-Type: image/jpeg\r\n">},
"commit"=>"Create"}

Controlador de

#app/controllers/designers/spree_assets_controller.rb
def create      
  @asset = Spree::Asset.new(asset_params)
...
end

private

def asset_params
  params.require(:asset).permit(:attachment)
end

Visualizar

<%= form_for @asset, url: designers_spree_assets_path, method: :post do |f| %>
  <%= f.label :attachment, "Upload image" %></br>
  <%= f.file_field :attachment %></br>
  <%= f.submit 'Create' %>
<% end %>
Foi útil?

Solução

Crie a seguinte associação no modelo, que tem imagens:

has_many :images, :as => :viewable, :order => :position, :dependent => :destroy, :class_name => "Spree::Image"

Esta é a forma como a Variante modelo :imagens, fazer bundle open spree para obter mais informações.

Em seguida, crie um formulário aninhado para criar novo anexo, eu prefiro simple_form

= simple_form_for @asset, :html => {:multipart => true } do |m|
  = m.simple_fields_for :images do |p|
    = p.file_field :attachment

Ou de uma maneira mais simples de fazê-lo seria incluir clipes de papel has_attached_file método em seu modelo.

A seguinte é a partir do modelo de Imagem, apenas para dar uma idéia de como as imagens de produtos são processados na Farra.

has_attached_file :attachment,
                  :styles => { :mini => '48x48>', :small => '100x100>', :product => '240x240>', :large => '600x600>' },
                  :default_style => :product,
                  :url => '/spree/products/:id/:style/:basename.:extension',
                  :path => ':rails_root/public/spree/products/:id/:style/:basename.:extension',
                  :convert_options => { :all => '-strip -auto-orient' }

Personalizar conforme necessário.

Espero que ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top