Bonjour,
je ne savais pas trop quoi mettre comme titre alors je vais expliquer ce
sera plus clair.
Actuellement je doit creer une application qui va referencer des
produits. A chaque produits, on pourra lui attacher des composants. Il
faudrait que l’attachement de composants puisse s’effectuer en meme
temps que la creation du produit (ce qui parait logique a mon sens)
En gros dans la vue NEW de Products, il faut au début avoir 1 composant
minimum obligatoire. La pas de probleme j’ai su le faire.
Mais apres il me faut pouvoir en creer autant que je le desire pour un
seul produit. J’ai pour cela une table pour les composants, une table
pour les produits et une table de liaison entre les tables composants et
produits.
Pour pouvoir creer un produit en meme temps qu’associer un composant a
ce produit, j’ai fait comme ca :
======= View : products/new =======
<% form_for(@product) do |f| %>
<%= f.label :name %> <%= text_field_with_auto_complete :product, :name,{}, :skip_style => false, :autocomplete => false %>
....<div id="components">
<p class="ligne_input">
<%= label :products_component, :component_id %>
<%= collection_select(:products_component, :component_id,
Component.all, :id, :name, { :prompt => “- Choose Component”}) %>
<%= label :products_component, :quantity %>
<%= text_field :products_component, :quantity %>
</p>
</div>
…
======= Products_controller =======
def create
@product = Product.new(params[:product])
respond_to do |format|
if @product.save
@product_component =
ProductComponent.new(params[:product_component])
@product_component.product_id = @product.id
if @product_component.save
flash[:notice] = ‘Product was successfully created.’
format.html { redirect_to(@product) }
format.xml { render :xml => @product, :status => :created,
:location => @product }
else
@product.destroy
format.html { render :action => “new” }
format.xml { render :xml => @product.errors, :status =>
:unprocessable_entity }
end
end
end
end
Il faudrait selon moi mettre le contenu de la div components dans un
partial et avec un bouton (+) sur la ligne rajouter la partial une fois
en dessous.
Et ensuite je ne sais pas comment traiter le cas de multiples components
dans mon controller.
Si quelqu’un a une idee, ca m’interesse car la je seche. A moins de
nommer les params differement a chaque fois mais je ne sais pas comment
faire ca dans la partial et deviner pour recuperer les donnees ensuite