2013-02-18 178 views
3

我跟隨着Railscast 196其中R Bates使嵌套形式。他有一個調查模型,has_many與一個Questions模型關聯。調查還接受了以下問題:問題。在surveys_controller的新動作,他做如下的調查表,以創建三個問題領域嵌套模型形式軌道3

def new 
    @survey = Survey.new 
    3.times { @survey.questions.build } 
    end 

和裏面的form_for @survey他下面的表單創建問題領域

<% f.fields_for :questions do |builder| %> 

    <p> 
    <%= builder.label :content, "Question" %><br /> 
    <%= builder.text_area :content, :rows => 3 %> 

    </p> 

在視頻中,一旦他點擊新調查,它會顯示三個問題字段(以及表單的其他元素)。這個形式的元素相關的問題並沒有出現在我的面前。我認爲他在Rails 3發佈之前做了這個插曲,所以有些東西可能已經改變了,但是,除了這是我沒有看到做3次的結果(@ survey.questions.build)之外,我無法弄清楚什麼。

型號

class Survey < ActiveRecord::Base 
    attr_accessible :name 

    has_many :questions, :dependent => :destroy 
    accepts_nested_attributes_for :questions 
end 

形式

<%= form_for @survey do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 

    <% f.fields_for :questions do |builder| %> 

    <p> 
    <%= builder.label :content, "Question" %><br /> 
    <%= builder.text_area :content, :rows => 3 %> 

    </p> 
    <% end %> 
    <p><%= f.submit %></p> 
<% end %> 

HTML表單

<form accept-charset="UTF-8" action="/surveys" class="new_survey" id="new_survey" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;"><input name="authenticity_token" type="hidden" value="AWvA3/JpixF0C3sO8OzA5mMGsJzknvu99eovYv7M78E="></div> 

    <p> 
    <label for="survey_name">Name</label><br /> 
    <input id="survey_name" name="survey[name]" size="30" type="text"> 
    </p> 

    <p><input name="commit" type="submit" value="Create Survey"></p> 
</form> 

更新

形式裏面,我加入這個

<%= @survey.questions %> 

和它的顯示這個

[#<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>, #<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>, #<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>] 

所以在測量控制器的新動作3.times顯然是工作,但對於由於某些原因我沒有顯示字段

<% f.fields_for :questions do |builder| %> 

     <p> 
     <%= builder.label :content, "Question" %><br /> 
     <%= builder.text_area :content, :rows => 3 %> 

     </p> 
+0

是你的代碼?如果是這樣,我沒有看到任何問題。你應該看到表單上的3個問題。你可以發佈你的調查模型和HTML表單嗎? – jvnill 2013-02-18 02:49:06

+0

@jvnill謝謝,我更新了OP – Leahcim 2013-02-18 02:53:37

回答

3

我應該在第一次看到它時特德。無論如何,您在fields_for上缺少=。那應該是

<%= f.fields_for :questions do |builder| %> 
+0

它總是給我們帶來的小細節。 – 2013-02-18 03:17:12

+0

這實際上是從Rails 2改爲3的東西。Ryan Bates源代碼不包含'=' – Leahcim 2013-02-18 04:21:22