2009-12-22 68 views
2

我正在構建一個將創建模型和它的關係的單頁表單。我經歷了網絡上的大量資源以及Railscast上的複雜表單系列,但似乎無法找到解決我的問題的方法。Rails與has_many通過關係嵌套模型表單並構建調用

這是我的。

class Campaign < ActiveRecord::Base 
    has_many :artwork_groups 
    has_many :artwork_locales, :through => :artwork_groups 

    accepts_nested_attributes_for :artwork_groups 
    accepts_nested_attributes_for :artwork_locales 
end 

class ArtworkGroup < ActiveRecord::Base 
    belongs_to :campaign 
    has_many :artwork_locales 
end 

class CampaignsController < ApplicationController 
    def new  
    @campaign = Campaign.new 
    @locales = Locale.all 

    # Build the artowrk groups and locales for the new campaign 
    2.times do 
     @campaign.artwork_groups.build do |ag| 
     @locales.each do |locale| 
      ag.artwork_locales.build(:locale_id => locale.id) 
     end 
     logger.debug ag.artwork_locales 
     end 
    end 

    @games = GameVersion.all(:order => "game_key").group_by(&:game_family).sort_by{|k| k.first.name } 

    respond_to do |format| 
     format.html 
    end 
    end 

在我看來,我有以下的(標記刪除):

<% form_for @campaign, :html => { :multipart => true } do |campaign| %> 

    <%= campaign.error_messages %> 
    <%= flash[:campaign_wizard] %> 

    <%= campaign.label :title %> 
    <%= campaign.text_field :title %> 

    <%= campaign.label :url %> 
    <%= campaign.text_field :url %> 

    <%= campaign.label :start_date %> 
    <%= campaign.text_field :start_date, {:class=>"datetimepicker"} %> 

    <%= campaign.label :end_date %> 
    <%= campaign.text_field :end_date, {:class=>"datetimepicker"} %> 

    <% campaign.fields_for :artwork_groups do |aw| %> 

    <%= aw.label :name, "Artwork Group Name" %> 
    <%= aw.text_field :name %> 

    <% aw.fields_for :artwork_locales do |al| %> 

     <%= al.label :locale_id %> 
     <%= al.text_field :locale_id %> 

     <%= al.label :language %> 
     <%= al.text_field :language %> 

     <%= al.label :upstate %> 
     <%= al.text_field :upstate %> 

    <% end %> 

    <% end %> 

    <%= campaign.submit 'Save Campaign &amp; Publish' %> 

<% end %> 

我得到在我看來,2作品組的部分,但我只讓每個作品組一個藝術作品的語言環境。我期待每個我已經加載的區域設置一個。我假設這是has_many通過關係或我的控制器中的嵌套構建調用的問題。

任何幫助將不勝感激。

回答

4

您是否試過將accepts_nested_attributes_for :artwork_locales添加到ArtworkGroup

+0

我愛一條線修復。就是這樣,謝謝! – 2009-12-22 22:45:15

相關問題