Attualmente, un Articolobelongs_to un società e has_manyItemVariants.plurale per l'associazione has_many fields_for non mostrando in vista
Sto cercando di utilizzare campi nidificati per aggiungere campi ItemVariant tramite il modulo Articolo, tuttavia utilizzando: item_variants non visualizza il modulo. Viene visualizzato solo quando utilizzo il singolare.
Ho controllato le mie associazioni e sembrano corrette, potrebbe avere qualcosa a che fare con l'elemento che viene annidato sotto Company, o mi manca qualcos'altro?
Grazie in anticipo.
Nota: il codice non pertinente è stato omesso dai frammenti di seguito.
MODIFICA: Non so se questo è rilevante, ma sto utilizzando CanCan per l'autenticazione.
routes.rb
resources :companies do
resources :items
end
item.rb
class Item < ActiveRecord::Base
attr_accessible :name, :sku, :item_type, :comments, :item_variants_attributes
# Associations
#-----------------------------------------------------------------------
belongs_to :company
belongs_to :item_type
has_many :item_variants
accepts_nested_attributes_for :item_variants, allow_destroy: true
end
item_variant.rb
class ItemVariant < ActiveRecord::Base
attr_accessible :item_id, :location_id
# Associations
#-----------------------------------------------------------------------
belongs_to :item
end
voce/new.html.erb
<%= form_for [@company, @item] do |f| %>
...
...
<%= f.fields_for :item_variants do |builder| %>
<fieldset>
<%= builder.label :location_id %>
<%= builder.collection_select :location_id, @company.locations.order(:name), :id, :name, :include_blank => true %>
</fieldset>
<% end %>
...
...
<% end %>
Grazie! Funzionava perfettamente, ma come riferimento stavo usando RailsCast ep 196-Nested-model-form-revised. Nella sua nuova azione conteneva solo '@survey = Survey.new' senza alcuna costruzione dell'associazione. Qualche idea del motivo per cui ho bisogno di costruire l'associazione e Ryan no/no? – 8bithero
Questo railscast è ancora migliore, anche se complesso, perché può aggiungere dinamicamente domande nel modulo di sondaggio. Quindi non ha bisogno di prepopolare nulla. – rewritten
Volevo solo aggiungere un significato per quelli che sono confusi riguardo al .build e perché Ryans non ne aveva bisogno. Se si guarda il suo codice in appliation_helper alla riga 3, si crea l'istanza della classe. Quindi questo prende il posto di .build. Spero che questo aiuti qualcun altro là fuori! –