0

ジャーナルとjournal_entriesのフィールドをテーブルの1つの行に配置し、同じビューに多くのデータ入力行を追加して表示する機能が必要です。(つまり、行のテーブルで、link_to_add_fieldsとaccepts_nested_attributesを使用して、テーブル内の行を展開します)。

ある種のf.parent.text_fieldまたはf.object.parent.text_fieldが必要ですか?

私は次のようなことをしようとしています

<table>
#in a :pm namespace
<%= form_for [:pm, @lease] do |f| %>
  <%= f.fields_for :journal_entries do |journal_entries| %>
    <%= render "journal_entry_fields" , f: journal_entries %>
  <% end %>
  <%= link_to_add_fields "+ Add transactions", f, :journal_entries %>
<% end %>
</table>

_journal_entry_fields.html.erb

<fieldset>
  <tr>
    ## HERE IS WHAT I'M LOOKING FOR <<<<<<<<<<<!!>>>>>>>>>>>>>
    <td><%= f.parent.text_field :dated %></td>
    <td><%= f.parent.text_field :account_name %></td>
    <td><%= f.text_field :credit %></td>
    <td><%= f.text_field :notes %></td>        
  </tr>
</fieldset>

私のモデル

class Lease < ActiveRecord::Base
  has_many :journals, :order => [:dated, :id] #, :conditions => "journals.lease_id = id"
  has_many :journal_entries, :through => :journals  
  accepts_nested_attributes_for :journal_entries , :allow_destroy => true
  accepts_nested_attributes_for :journals ,  :allow_destroy => true    
end

class Journal < ActiveRecord::Base
  belongs_to :lease, :conditions =>  :lease_id != nil   
  has_many :journal_entries
  accepts_nested_attributes_for :journal_entries , :allow_destroy => true
end

class JournalEntry < ActiveRecord::Base
  belongs_to :journal
end

Rails3.2.12とruby1.9.3を使用しています

私はこれが直面している問題よりも優れた解決策であるかどうかを確認しようとしています:rails link_to_add_fieldsがhas_many:through(内部にネストされたフォームを含む)でフィールドを追加しない

大幅に違うと思うので、別のスレッドを作りました。

ありがとう、フィル

4

2 に答える 2

0

あなたのユースケースについての私の理解によると、あなたはジャーナルとそのエントリを単一の形式のリースで作成したいと考えています。したがって、以下のように、両方のfields_forを使用できます。

<table>
  #in a :pm namespace
  <%= form_for [:pm, @lease] do |f| %>
    <%= f.fields_for :journals do |journal| %>
      <%= render "journal_entry_fields" , f: journal %>
    <% end %>
  <%= link_to_add_fields "+ Add transactions", f, :journals %>
 <% end %>
</table>

_journal_entry_fields.html.erb

<fieldset>
  <tr>
    <td><%= f.text_field :dated %></td>
    <td><%= f.text_field :account_name %></td>
    <%= f.fields_for :journal_entries do |journal_entry| %>
      <td><%= journal_entry.text_field :credit %></td>
      <td><%= journal_entry.text_field :notes %></td>
    <% end %>   
  </tr>
</fieldset>

ただし、新しいレコードが動的に追加されるたびにジャーナルエントリを初期化する必要があります。私は自分のPCを使用していないので、今はこれを手伝うことはできません。

于 2013-03-13T20:03:26.770 に答える
0

これを試してください:http://railscasts.com/episodes/196-nested-model-form-revised

RailsCastsモデルリレーションはモデルリレーションに似ていますが、HTMLを変更する必要があります。

RailsCastsモデル:Survey > Question > Answer

あなたのモデル:Lease > Journal > JournalEntry

于 2013-03-13T18:58:27.447 に答える