2016-06-27 53 views
0

我無法使用嵌套表單顯示belogns位置。Rails - 我無法使用嵌套表單在我的用戶表單上顯示位置

我想創建用戶並在位置模型中保存地址,城市,州等,並在用戶模型中保存名稱,用戶名,電子郵件地址。

我在控制檯上沒有錯誤。但是字段(select或dropdowns,text_fields等)沒有顯示出來。數據庫有記錄。

這是我user.rb型號:

class User < ActiveRecord::Base 

has_many :locations 
    accepts_nested_attributes_for :locations 
end 

這是我location.rb型號:

class Location < ActiveRecord::Base 
    belongs_to :user 
end 

這是我的用戶表單:

<div class="col-xs-12 col-sm-12 col-md-8 col-lg-8"> 
    <%= form_for(["admin", @user]) do |f| %> 
    <% if @user.errors.any? %> 
     <div id="error_explanation"> 
     <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2> 

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

    <div class="field"> 
     <%= f.label :name %><br> 
     <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
     <%= f.label :username %><br> 
     <%= f.text_field :username %> 
    </div> 
    <div class="field"> 
     <%= f.label :email %><br> 
     <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
     <%= f.label :password %><br> 
     <%= f.text_field :password %> 
    </div> 

    <!-- Here is the nested form --> 

    <%= f.fields_for :locations do |location| %> 
     <%= location.label :country %> 
     <%= location.select :country%> 

     <%= location.label :state %> 
     <%= location.text_field :state%> 

    <% end %> 

    <div class="actions form-group"> 
     <%= f.submit class: 'form-control' %> 
    </div> 
    <% end %> 
+0

請問您@user對象有一個位置了嗎?如果不是,則需要爲服務器創建一個作爲第一個位置的佔位符(創建時)。 – Leito

回答

0

添加以下對你的看法:

<% f.object.locations.build if f.object.locations.empty? %> 
<%= f.fields_for :locations do |location| %> 
.... 

您也可以將此邏輯添加到控制器中,但我會將其添加到視圖中。爲什麼?因爲如果你想在另一個控制器中重用這個表單,你將不得不復制你的代碼。

如果你想在將來添加多個位置,我建議你看這兩個railscats:

http://railscasts.com/episodes/196-nested-model-form-part-1 
http://railscasts.com/episodes/197-nested-model-form-part-2 
相關問題