如何为模型创建表单,该模型嵌入了在rails 4中继承两个子节点的模型

时间:2014-07-10 14:25:06

标签: ruby-on-rails inheritance ruby-on-rails-4

我正在尝试为我的一个名为Property的模型创建一个表单,该表单嵌入另一个名为LateFeePolicy的模型。

class Property
   include Mongoid::Document
   include Mongoid::Timestamps

   embeds_one :late_fee_policy
   accepts_nested_attributes_for :late_fee_policy
end

LateFeePolicy是两个子类的父级:

class FixedLateFeePolicy < LateFeePolicy
   field :amount, type: Money
end

class PercentageLateFeePolicy < LateFeePolicy
   field :percentage, type: Float
end

问题是如何动态生成表单以创建属性实例并在固定或百分比延迟费用政策之间进行选择。

这是我的表格,但打开后它没有显示任何内容:

<%= form_for @property, :html => { :class => 'form-horizontal' } do |f| %>
   <div class="control-group">
      <%= f.label :late_fee_policy, :class => 'control-label' %>
      <div class="controls">
         <%= f.fields_for :late_fee_policy do |flfp| %>
             <div><%= flfp.label :amount %>
             <%= flfp.text_field :amount %></div>
         <% end %>
      </div>
   </div>
<% end %>

1 个答案:

答案 0 :(得分:1)

我会向Property模型添加一个属性,以指定它是哪种类型,并将其表示为单选按钮,并根据单选按钮显示或隐藏正确的字段。我可能会误解你的问题。 Checkout RailsCasts Nested Forms Part 2,它会动态添加动态字段。