simple_form 有两个模型?
simple_form with two models?
这是我为客户模型创建的表格。
在填充 customers
table 时,我也在 managers
table 中插入了一些数据。但是我想在这个 simple_form
中添加一个 date picker
但是 date
只存储在 Manger
模型中,而 Customer 模型没有日期字段。我该怎么做?我有哪些替代选择?
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
模型中没有。
我建议您在客户模型中使用 accepts_nested_attributes_for
。
像这样:
在客户模型中,
accepts_nested_attributes_for :managers
在视图页面中,在现有表单内
<%= f.fields_for :managers do |m| %>
<%= m.date_field :date %>
<% end %>
您始终可以将 getter 和 setter 添加到客户模型并手动设置经理字段。同样,这取决于与经理的关系,如果它已经存在等等,但要点是您可以创建方法,然后可以作为客户方法在表单中访问。
# in customer.rb
def manager_date=(date)
manager.date = date
end
def manager_date
manager.date
end
然后在表格中
<%= f.input :manager_date %>
注意 - 这是一个简短的示例,您需要将管理器保存在某个地方,在更新客户之前或之后执行此操作将取决于您的需要。
另一种方法是在 customer 中为 manager_date 创建一个 attr_accessor,如果存在,则在保存客户后更新管理器
after_save :update_manager
def update_manager
manager.date = manager_date
manager.save
end
这是我为客户模型创建的表格。
在填充 customers
table 时,我也在 managers
table 中插入了一些数据。但是我想在这个 simple_form
中添加一个 date picker
但是 date
只存储在 Manger
模型中,而 Customer 模型没有日期字段。我该怎么做?我有哪些替代选择?
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
模型中没有。
我建议您在客户模型中使用 accepts_nested_attributes_for
。
像这样:
在客户模型中,
accepts_nested_attributes_for :managers
在视图页面中,在现有表单内
<%= f.fields_for :managers do |m| %>
<%= m.date_field :date %>
<% end %>
您始终可以将 getter 和 setter 添加到客户模型并手动设置经理字段。同样,这取决于与经理的关系,如果它已经存在等等,但要点是您可以创建方法,然后可以作为客户方法在表单中访问。
# in customer.rb
def manager_date=(date)
manager.date = date
end
def manager_date
manager.date
end
然后在表格中
<%= f.input :manager_date %>
注意 - 这是一个简短的示例,您需要将管理器保存在某个地方,在更新客户之前或之后执行此操作将取决于您的需要。
另一种方法是在 customer 中为 manager_date 创建一个 attr_accessor,如果存在,则在保存客户后更新管理器
after_save :update_manager
def update_manager
manager.date = manager_date
manager.save
end