2017-05-01 4 views
0

Je suis débutant complet avec des formes, essayant juste de l'apprivoiser mais atm sans espoir.Remplacer button_to avec dynamique Sélectionnez le formulaire

J'ai cette configuration de button_to suivante:

<% @product.variants.each do |variant| %> 
    <div><%= variant.asin %></div> 
    <div><%= variant.price %></div> 
    <div><%= button_to "Add to cart", shopping_cart_path(:variant_id => variant) %></div> 
<% end %> 

Cela fonctionne très bien, le problème est, il crée un plusieurs boutons pour chaque produit.

enter image description here

Ce que je veux obtenir est d'avoir un seul bouton et sélectionnez, comme indiqué ci-dessous. Quelles directions dois-je prendre pour passer ce hachage dynamiquement.

enter image description here

Répondre

1

Vous pouvez utiliser select_tag et de l'utiliser imbriqué dans un form_tag. Vous aurez un form contenant une étiquette select à l'intérieur.

Votre code devrait ressembler à ceci:

<%= form_tag shopping_cart_path do %> 
    <%= select_tag('variant', options_from_collection_for_select(@product.variants, "id", "asin")) %> 
    <%= submit_tag "Create" %> 
<% end %> 

Note: Le code ci-dessus n'est pas testé, mais il devrait vous donner une idée sur la façon dont vous devriez aborder ce sujet.

+0

merci @ florin-ionce, cela m'a donné quelques conseils. Un indice sur la façon dont je peux passer ce (variant_id => variant) avec form_tag? – nacon

+0

@nacon Je pense que cela devrait fonctionner comme ceci '<% = select_tag ('variant_id', options_from_collection_for_select (@ product.variants," id "," asin "))%>' –

+0

merci @ florin-ionce, cela a fonctionné comme vous m'a dit. Tu as sauvé ma journée! – nacon