这是我的客户模型的创建表单。
在填充customers
表时,我也在managers
表中插入了一些数据。但我想在此date picker
中添加simple_form
,但date
仅存储在Manger
模型中,而客户模型没有日期字段。我该怎么做?我有哪些替代选择?
new.html.erb
<%= stylesheet_link_tag "customers" %>
<div class="row">
<div class="panel panel-default center" id="new-width">
<div class="panel-body">
<%= simple_form_for @customer do |f| %>
<%= f.input :name,:autocomplete => :off %>
<%= f.input :principalAmount,:autocomplete => :off %>
<%= f.input :interestRate %>
<%= f.input :accountType %>
<%= f.input :duration,:autocomplete => :off %>
<%= f.button :submit %>
<% end %>
</div>
</div>
</div>
编辑:Manager
模型有许多独立于Customer
模型的字段。但是,当创建客户时,必须在Manager
模型中添加Customer
模型中不存在的日期。
答案 0 :(得分:2)
我建议您在客户模型中使用accepts_nested_attributes_for
。
像这样:
在客户模型中,
accepts_nested_attributes_for :managers
在视图页面中,在现有表单内
<%= f.fields_for :managers do |m| %>
<%= m.date_field :date %>
<% end %>
答案 1 :(得分:2)
您始终可以在客户模型中添加getter和setter,并手动设置manager字段。同样,它取决于与经理的关系,如果它已经存在,等等,但重点是你可以创建方法,然后可以作为客户方法在表单中访问。
# in customer.rb
def manager_date=(date)
manager.date = date
end
def manager_date
manager.date
end
然后以表格
<%= f.input :manager_date %>
注意 - 这是一个简短的示例,您需要将经理保存在某处,并在客户更新之前或之后执行此操作取决于您的需求。
另一种方法是在客户中为manager_date创建一个attr_accessor,如果在那里,在客户保存后更新经理
after_save :update_manager
def update_manager
manager.date = manager_date
manager.save
end