没有do循环的Fields_for



有没有一种方法可以在不循环所有关联项的情况下实现fields_forhas_many关联?


我有一个与这里讨论的情况非常相似的情况:

我有一个Person模型,有几个相关的模型(AddressPhone numberJobtitle…),在表单上我只想创建新记录。新记录应该从现有记录中预先填充。我有一个助手函数,它可以捕获正确的数据,我只想让fields_for显示它,而不必经过do循环。

以下是您需要的:

#app/models/person.rb
class Person < ActiveRecord::Base
   has_many :addresses
   has_many :phone_numbers
   has_many :job_titles
   accepts_nested_attributes_for :addresses, :phone_numbers, :job_titles
end
#app/controllers/people_controller.rb
class PeopleController < ApplicationController
   def edit
       @person = Person.find params[:id]
       @person.addresses.build #-> this adds onto the existing "addresses" for that person
   end
end

这将允许您使用以下内容:

#app/views/people/edit.html.erb
<%= form_for @person do |f| %>
   <%= f.fields_for :addresses do |a| %>
       <% if a.object.new_record? %>
          <%= a.text_field :street %>
          <%= a.text_field :town %>
       <% end %>
   <% end %>
   <%= f.submit %>
<% end %>

这应该只输出new关联对象(您构建的对象)的输入。这有点麻烦,但我理解你的问题——你只想显示新的输入(现有的不应该显示)。

保存此项将Person对象添加关联记录。现有的将仍然存在。

相关内容

  • 没有找到相关文章

最新更新