Rails如何做f.parent.text_field:名字



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

必须有某种f.parent。text_field还是f.t 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不添加字段与has_many:through(内部嵌套的形式)

我做了一个不同的线程,因为我觉得它是如此的不同。

谢谢,菲尔。

根据我对您的用例的理解,您希望以单一形式的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>

尽管每次动态添加新记录时都需要初始化日志条目。我现在没法帮你,因为我不在电脑上。

试试:http://railscasts.com/episodes/196-nested-model-form-revised

railscast模型关系与您的模型关系类似,尽管您需要修改HTML。

RailsCasts Models: Survey > Question > Answer

Your Models: Lease > Journal > JournalEntry

相关内容

  • 没有找到相关文章

最新更新