J'essaye d'implémenter le détail principal sous forme de rails avec fields_for.Rails 3 en utilisant fields_for in view ne fonctionne pas
J'ai un modèle appelé recette:
class Recipe < ActiveRecord::Base
validates :name, :presence => true
validates :directions, :presence => true
has_many :recipe_ingredients
end
et un modèle appelé RecipeIngredient:
class RecipeIngredient < ActiveRecord::Base
belongs_to :recipe
#belongs_to :ingredient
end
Dans le nouveau contrôleur je remplir les ingrédients avec trois dossiers vides comme celui-ci:
def new
@recipe = Recipe.new
3.times {@recipe.recipe_ingredients.build}
# @ingredients = RecipeIngredient.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @recipe }
end
end
Ce que je voudrais faire dans la vue est de sortir les champs de recettes (qui fonctionnent ok) et les trois champs pour les ingrédients de la recette. Dans la partie supérieure de la vue que j'ai ceci:
<%= form_for :rec do |f| %>
Je puis énumérer les champs de recettes qui sont correctement affichés, comme:
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
J'essaie alors d'afficher les lignes d'ingrédients, mais le code ne semble aller dans la section fields_for:
premier essai:
<% for ingredient in @recipe.recipe_ingredients %>
This prints out three times
<% fields_for "...", ingredient do |ingredient_form| %>
But this never prints out
<p>
Ingredient: <%= ingredient_form.text_field :description %>
</p>
<% end %>
<% end%>
Je trois lignes vides dans recipe_ingredients et la boucle for semble itérater trois fois mais le code dans fields_for ne se déclenche jamais.
Deuxième essai:
<% for recipe_ingredient in @recipe.recipe_ingredients %>
b
<% fields_for "...", recipe_ingredient do |recipe_ingredient| %>
Rec: <%= recipe_ingredient.text_field :description %>
<% end %>
<% end %>
essayer troisième (basé sur la réponse ici):
<% form_for :recipe do |f| %>
<% f.fields_for ingredients do |ingredient_form| %>
<p>
Ingredient: <%= ingredient_form.text_field :description %>
</p>
<% end %>
<% end %>
Y at-il quelque chose d'évident que je fais mal?
Merci pour le t il répond. J'ai ceci ci-dessus: <% = form_for (@recipe) do | f | %> Lorsque j'essaye votre code j'obtiens l'erreur suivante: variable locale non définie ou méthode 'ingrédients 'pour # <#: 0x00000101e9b900> –
gugguson
@gugguson - J'avais" ingrédients "mais signifiait": ingrédients "- les ingrédients du symbole diront à la forme_pour (recette) d'appeler le tableau des ingrédients. –
Super - cela a fonctionné. Merci de votre aide. Petite question: Comment pourrais-je l'utiliser dans la vue Afficher? – gugguson