【问题标题】:Using Formtastic's semantic_fields_for with a has_many association将 Formtastic 的 semantic_fields_for 与 has_many 关联一起使用
【发布时间】:2010-09-16 14:37:51
【问题描述】:

我正在尝试使用 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
  1. 保存主页时会创建默认用户。如何让表单只显示新创建的记录而不显示现有记录?

  2. 如果 #1 不可行,如何更新现有记录?我在accepted_nested_attributes_for 上设置了update_only,但仍会创建一条新记录。

  3. 我在控制器操作中执行 2.times{ @home.home_members.build }。当我打印 @home.home_members 的大小时,我得到了 3(一个已经存在),如预期的那样。为什么表单只显示 2 组输入,其中一组填充了现有的 home_member 数据?

【问题讨论】:

  • 您还需要这个问题的答案吗?如果您找到了解决方案,您可以自己发布答案吗?

标签: ruby-on-rails nested-forms formtastic


【解决方案1】:

很好地回答问题 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 %>

【讨论】:

    【解决方案2】:

    我过去曾成功使用过 Cocoon。 https://github.com/nathanvda/formtastic-cocoon

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多