2014-06-08 2 views
0

J'ai un modèle de produit et un modèle de taille. Je veux afficher une liste déroulante dans ma forme simple des tailles disponibles pour chaque produit. Je pense que je dois utiliser l'assistant d'association fourni par simple_form mais je n'arrive pas à le faire fonctionner. Quelqu'un peut-il aider? MerciAssistant d'association Simple_form

L'erreur que je reçois est:

Association cannot be used in forms not associated with an object

Product.rb

class Product < ActiveRecord::Base 

    has_many :order_products 
    has_many :orders, through: :order_products 
    has_many :sizes 

end 

Size.rb

class Size < ActiveRecord::Base 

    belongs_to :product 

end 

produits/show.html.erb

<%= simple_form_for :basket, url: product_basket_path(@product), remote: true do |f| %> 

<%= f.input :quantity, as: :select, collection: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], selected: 1, required: false %> 

<%= f.association :size %> 


<%= f.button :submit, "Add to basket" %> 

<% end %> 

Répondre

0

Essayez cette;

<%= f.input :size, as: :select, collection: @product.sizes."row_name", required: false %> 
+0

grand, merci, seul problème est que affiche le hachage plutôt que la taille réelle lisible par l'homme? – Robbo

+0

@James, je n'ai aucune idée de votre modèle de tailles. Partagez-le. pourrait être product.sizes.size – Acacia

+0

Merci l'homme, je viens de l'ajouter à mon modèle de taille 'def to_s" # {taille} " fin' – Robbo

0

forme simple a une méthode association:

<%= f.association :size %> 

Vous pouvez ensuite personnaliser la méthode d'affichage avec label_method: ou supprimer l'option vide avec include_blank: false