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 & Publish' %>
<% end %>
我得到在我看來,2作品組的部分,但我只讓每個作品組一個藝術作品的語言環境。我期待每個我已經加載的區域設置一個。我假設這是has_many通過關係或我的控制器中的嵌套構建調用的問題。
任何幫助將不勝感激。
我愛一條線修復。就是這樣,謝謝! – 2009-12-22 22:45:15