2015-01-20 60 views
0

我有一個簡單的調查與幾個部分本身的模型。我將這些部分逐個添加到調查表中,但第一個失敗。問題是,當表單呈現時,「demographics_part」字段不會顯示在表單中。rails 4.2.0接受嵌套屬性不起作用

我的模型都綁在一起正確,如證明在控制檯:

Loading development environment (Rails 4.2.0) 
2.2.0 :001 > s = Survey.last 
    Survey Load (0.6ms) SELECT `surveys`.* FROM `surveys` ORDER BY  `surveys`.`id` DESC LIMIT 1 
=> #<Survey id: 1, confirmed_at: nil, created_at: "2015-01-20 20:06:38",  updated_at: "2015-01-20 20:06:38"> 
2.2.0 :002 > s.demographics_part 
    DemographicsPart Load (0.6ms) SELECT `demographics_parts`.* FROM `demographics_parts` WHERE `demographics_parts`.`survey_id` = 1 LIMIT 1 
=> #<DemographicsPart id: 3, name: "foo", created_at: "2015-01-20 20:06:38", updated_at: "2015-01-20 20:06:38", survey_id: 1> 
2.2.0 :003 > d = DemographicsPart.find(3) 
    DemographicsPart Load (0.9ms) SELECT `demographics_parts`.* FROM `demographics_parts` WHERE `demographics_parts`.`id` = 3 LIMIT 1 
=> #<DemographicsPart id: 3, name: "foo", created_at: "2015-01-20 20:06:38", updated_at: "2015-01-20 20:06:38", survey_id: 1> 
2.2.0 :004 > d.survey 
    Survey Load (0.8ms) SELECT `surveys`.* FROM `surveys` WHERE `surveys`.`id` = 1 LIMIT 1 
=> #<Survey id: 1, confirmed_at: nil, created_at: "2015-01-20 20:06:38", updated_at: "2015-01-20 20:06:38"> 
2.2.0 :005 > s = Survey.new 
=> #<Survey id: nil, confirmed_at: nil, created_at: nil, updated_at: nil> 
2.2.0 :006 > s.build_demographics_part 
=> #<DemographicsPart id: nil, name: nil, created_at: nil, updated_at: nil, survey_id: nil> 
2.2.0 :007 > d = s.build_demographics_part 
(0.2ms) BEGIN 
(0.1ms) COMMIT 
    => #<DemographicsPart id: nil, name: nil, created_at: nil, updated_at: nil, survey_id: nil> 
    2.2.0 :008 > d.name = "bar" 
=> "bar" 
    2.2.0 :009 > s.save 
(0.3ms) BEGIN 
    SQL (0.5ms) INSERT INTO `surveys` (`created_at`, `updated_at`) VALUES ('2015-01-20 21:09:02.625560', '2015-01-20 21:09:02.625560') 
    SQL (0.4ms) INSERT INTO `demographics_parts` (`name`, `survey_id`, `created_at`, `updated_at`) VALUES ('bar', 2, '2015-01-20 21:09:02.630175', '2015-01-20 21:09:02.630175') 
    (9.6ms) COMMIT 
    => true 

這裏是我的形式:

<%= form_for(@survey) do |f| %> 
    <div class="row collapse"> 
     <div class="small-3 columns"> 
     <%= f.label :confirmed_at, class: "right inline", title: "Last Confirmed", data: {tooltip: true} %> 
     </div> 
     <div class="small-9 columns"><%= @survey.confirmed_at %></div> 
    </div> 

     <% f.fields_for :demographics_part do |d| %> 
     <%= d.label :name, "Name" %> 
     <% end %> 

    <div class="row collapse"> 
     <div class="small-9 small-offset-3 columns"><%= f.submit %></div> 
    </div> 
    <% end %> 

這裏是我的控制器:

# GET /surveys/new 
def new 
    @survey = Survey.new 
    @d = @survey.create_demographics_part 
end 

我不看看有什麼不對。

回答

2

變化 <% f.fields_for :demographics_part do |d| %>

有: <%= f.fields_for :demographics_part do |d| %>

的錯誤是因爲你沒有打印fields_for(在=%後)