0

我需要将 journals 和 journal_entries 中的字段放在表的一行中,并且能够在同一个视图中添加和显示许多数据条目行。(即行表并使用带有accepts_nested_attributes 的link_to_add_fields 来扩展表中的行)。

必须有某种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

我正在使用 Rails 3.2.12 和 ruby​​ 1.9.3

我试图看看这是否比面临的问题更好的解决方案:rails link_to_add_fields not added fields with has_many :through (with nested form inside)

我做了一个不同的线程,因为我认为它非常不同。

谢谢,菲尔

4

2 回答 2

0

根据我对您的用例的理解,您希望以单一形式的 Lease 创建期刊及其条目。因此,您可以为它们使用 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>

尽管每次动态添加新记录时都需要初始化日记帐分录。我现在不能帮你解决这个问题,因为我不在我的电脑上。

于 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 回答