2012-02-22 69 views
0

我有一個簡單的Rails窗體,它使用一個條件build_association(如果還沒有關聯的父級)來包含text_field來編輯父級。如果應該添加新的父記錄,這很有用。這樣做的問題是,如果父項已經存在,如果text_field被更新,那麼它將會改變影響許多孩子的父記錄。如果不管父關聯是否已經存在,都會調用build_association,那麼不斷創建新的重複父項。如何根據Rails中text_field的內容設置和取消設置build_association?

我想了解如何使用build_association和fields_for向數據庫中添加新父項,如果用戶鍵入不熟悉的名稱,但要將父項設置爲現有記錄(如果名稱與現有父項的匹配名稱。 (如果我能得到這部分工作的權利,下一步將是添加自動完成。)的代碼如下:

<%= form_for @sermon, :html => { :multipart => true } do |f| %> 
     <div class="field"> 
     <%= f.label :title %><br /> 
     <%= f.text_field :title %> 
     </div> 
     <div class="field"> 
     <%= f.label :date %><br /> 
     <%= f.text_field :date %> 
     </div> 
<div> 
    <% @sermon.build_speaker unless @sermon.speaker %> 
     <%= f.fields_for :speaker do |g| %> 
      <%= g.label :name, "Speaker name:" %><br /> 
      <%= g.text_field :name %> 
      <%= g.submit %> 
     <% end %> 
    </div> 
     <div class="actions"> 
     <%= f.submit %> 
     </div> 
    <% end %> 

回答

1

我覺得我的寶石get_or_build將是對您有用。我有同樣的問題,並沒有找到任何適當的清潔解決方案,所以我決定寫這個寶石。請享用!

+0

這是完美的。我很高興你碰巧看到我的問題。 – Michael 2012-09-18 16:42:08

相關問題