2009-12-22 8 views
2

Je construis un formulaire d'une page qui va créer un modèle et il est des relations. J'ai parcouru une tonne de ressources sur le net ainsi que la série de formulaires complexes sur Railscasts, mais je n'arrive pas à trouver la solution à mon problème.Rails Nested Modèle de formulaire avec has_many par relation et construire appel

Voici ce que j'ai.

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 

À mon avis, je donne les résultats suivants (balisage supprimé):

<% 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 %> 

Je reçois les sections de groupe d'œuvres d'art 2 à mon avis, mais je n'obtenir un paramètre régional d'art par groupe d'œuvres d'art . J'attendais un pour chaque locale que j'ai chargé. Je suppose que c'est un problème avec la relation has_many through ou les appels de build imbriqués dans mon contrôleur.

Toute aide sera grandement appréciée.

Répondre

4

Avez-vous essayé d'ajouter à accepts_nested_attributes_for :artwork_localesArtworkGroup?

+0

I love on fixe la ligne. C'était tout, merci! –

Questions connexes