2012-03-26 25 views
2

Ich habe einige verschachtelte Modelle in meiner Rails-Anwendung. ich habe einen artikel hat mny eigenschaften.Fields_for Nested Model Rails 3.2.2

class Article < ActiveRecord::Base 
    has_many :properties, :dependent => :destroy 
    accepts_nested_attributes_for :properties 
end 

class Property < ActiveRecord::Base 
    belongs_to :article 
end 

Und jetzt möchte ich dies in meiner Ansicht bearbeiten, damit ich die Controler

# GET /articles/new 
    # GET /articles/new.json 
    def new 
    @article = Article.new 
    3.times { @article.properties.build } 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @article } 
    end 
    end 

editet und bearbeitet auch die Aussicht und die _format.html.erb

<%= form_for(@article) do |f| %> 
    <% if @article.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@article.errors.count, "error") %> prohibited this article from being saved:</h2> 

     <ul> 
     <% @article.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :description %><br /> 
    <%= f.text_area :description %> 
    </div> 
    <% f.fields_for :properties do |prop| %> 
      <div class="field"> 
      <%= prop.label :name %><br /> 
      <%= prop.text_field :name %> 
     </div> 
    <% end %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Aber es ist keine Möglichkeit, aufzutreten. Wenn ich ein neues Modell erstellen möchte, kann ich keine Eingabefelder für die Eigenschaften sehen.

Was habe ich falsch gemacht?

Antwort

4

Sie vermissen eine = in Ihrer fields_for Linie. Das heißt, es sollte sein:

<%= f.fields_for :properties do |prop| %> 
+0

Das war es. Ich danke dir sehr. – Lailo

+0

Keine Sorgen. Vergessen Sie nicht, Sie können dies auch als richtige Antwort akzeptieren, indem Sie auf das grüne Häkchen klicken. Wenn Sie Ihre akzeptierte Rate erhöhen, werden andere bereitwilliger, Ihnen in der Zukunft zu helfen. – Chowlett