Eri*_* M. 7 ruby-on-rails nested-forms formtastic
我正在尝试使用formtastic创建一个嵌套的表单.我在下面列出了我的代码,但遇到了一些问题,我也在下面列出了这些问题.有什么建议?谢谢.
# Home model
class Home < ActiveRecord::Base
has_many :home_members
accepts_nested_attributes_for :home_members, :reject_if => :all_blank, :update_only => true, :allow_destroy => true
end
# Form builder in members/new.html.erb
<%= semantic_form_for @home, :url => home_members_path(@home), :html => { :method => :post }, :remote => true do |f| %>
<%= f.inputs do %>
<%= f.semantic_fields_for :home_members do |h| %>
<%= h.input :name %>
<%= h.input :email %>
<%= h.input :birthday, :as => :string %>
<% end %>
<% end %>
# members_controller's new method; @home is set in a before filter
def new
2.times{ @home.home_members.build }
end
Run Code Online (Sandbox Code Playgroud)
保存主页时会创建默认用户.如何让表单仅显示新创建的记录而不显示现有记录?
如果无法#1,如何更新现有记录?我在accepts_onted_attributes_for上设置了update_only,但仍然创建了一条新记录.
我在控制器动作中做了2次{@ home.home_members.build}.当我打印@ home.home_members的大小时,我按预期得到3(一个已经存在).为什么表单只显示2组输入,其中一组填充现有的home_member数据?
很好回答问题1)仅显示新创建的对象
# Form builder in members/new.html.erb
<%= semantic_form_for @home, :url => home_members_path(@home), :html => { :method => :post }, :remote => true do |f| %>
<%= f.inputs do %>
<%= f.semantic_fields_for :home_members do |h| %>
<% if h.object.new_record? %>
<%= h.input :name %>
<%= h.input :email %>
<%= h.input :birthday, :as => :string %>
<% end %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15555 次 |
| 最近记录: |