2017-08-18 1 views
0

Gerade jetzt Im haben eine harte Zeit, um Formularfelder für das Array-Attribut innerhalb Mai bilden Objekt. Ich benutze Virtus Edelstein zum Einrichten von Attributen.Rendern Felder für Array-Attribut in Rails-Formular-Objekt

Mein Code:

class JournalForm 
    include Virtus.model 

    extend ActiveModel::Naming 
    include ActiveModel::Conversion 
    include ActiveModel::Validations 

    attribute :group_no, String 
    attribute :description, String 
    attribute :rank_code, String 
    attribute :transaction_type, String 
    attribute :type, String 
    attribute :accounts, Array[JournalAccountAttribute] 

    validates_presence_of :group_no, :description, :rank_code, :transaction_type,:type 

end 

Dies ist die JournalAccountAttribute Klasse

class JournalAccountAttribute 
    include Virtus.model 

    attribute :account, String 
    attribute :transaction_type, String 
end 

Das Problem ist, ich weiß nicht, wie dies in meinen Augen zu machen. Also meine Beziehung ist 1 Journal has_many accounts.

+0

was wollen Sie –

+0

Ihrer Ansicht nach machen @AnkurPohekar ich zum Beispiel Array Felder acount und Transaktionstyp machen wollen < % = f.text_field: account%> <% = f.text_field: transaction_type%> –

+0

warum verwenden Sie nicht ActiveRecord –

Antwort

0

Nach ActionView - Nested Attributes Examples docs das Formular sollte in Ihrer Ansicht wie:

<%= form_for @journal do |journal_form| %> 
    ... 
    <% @journal.journal_accounts.each do |journal_account| %> 
    <% if journal_account.active? %> 
     <%= journal_form.fields_for :journal_accounts, journal_account do |journal_account_fields| %> 
     Account: <%= journal_account_fields.text_field :account %> 
     Transaction type: <%= journal_account_fields.text_field :transaction_type %> 
     <% end %> 
    <% end %> 
    <% end %> 
    ... 
<% end %>