2010-12-14 27 views
3

Je les modèles suivants:Ruby on Rails: Comment ajouter un champ de texte de formulaire si le fichier correspondant dans le modèle n'existe pas?

Product: name, shop_id (foreign key) 
Shop: name 

Les associations sont:

Product: belongs_to :shop 
Shop: has_many :products 

Dans la forme qui crée une nouvelle Product J'ai:

<%= f.label(:shop, "Shop:") %> 
<%= f.select(...) %> 

C'est une boîte de sélection avec tous les magasins existants. La dernière option dans cette zone de sélection est Create New Shop. Lorsque l'utilisateur clique sur cette option, Javascript présente un champ supplémentaire:

<div id="new_shop_wrapper"> 
    <label for="new_shop">New shop:</label> 
    <input id="new_shop" name="new_shop" type="text" /> 
</div> 

(. Cette div est masquée par défaut avec display: none)

Comment dois-je ajouter cette div sous la forme Rails création?

J'ai essayé:

<%= f.label(:new_shop, "New Shop:") %> 
<%= f.text_field(:new_shop) %> 

mais il ne fonctionne pas parce que new_shop est pas de champ de Product.

Je pensais utiliser:

<%= text_field(<object>, :new_shop) %> 

mais je ne sais pas quoi utiliser.

Veuillez nous aviser.

+1

Vous auriez probablement obtenir plus de traction si le titre de votre question était une question :-) –

+0

Merci, j'ai changé le titre. –

Répondre

4

Essayez

<%= text_field_tag("new_shop") %> 
+0

Merci, parfait :) –

2

En fait, vous pouvez ajouter votre méthode dans le modèle:

class Product < ActiveRecord::Base 
    def new_show=(val) 
    self.shop = Shop.new({:name => val}) 
    end 
end