Rails 4 改革 GEM 和 simple_form
Rails 4 with Reform GEM and simple_form
我正在尝试使用 reform gem 实现嵌套。我有三个型号:
- 客户 (belongs_to :personal_details)
- 个人详细信息(belongs_to:标题)
- 标题(has_many:个人详细信息)
我正在尝试使用以下代码通过改革 gem 创建一个 CustomerForm:
/app/forms/customer_form.rb
class CustomerForm < Reform::Form
property :national_id
validates :national_id,
:presence => true
property :personal do
property :first_name
property :title
validates :first_name,
:presence => true
end
end
/app/controllers/customers_controller.rb
def new
@form = CustomerForm.new(Customer.new(personal: Personal.new))
end
/app/views/customers/new.html.haml
= simple_form_for @form, :url => customers_path do |f|
= f.input :national_id
= f.simple_fields_for :personal do |builder|
= builder.input :first_name
= builder.association :title
= f.button :submit, "Submit"
:title 属性在表单提交期间不会接收任何输入。 Title 和 PersonalDetail 之间的关系仅用于用 Title.name 列表填充下拉列表。如果我尝试上面的方法,我会收到一条错误消息,指出不存在关联:性别。当我使用基于标准模型的方法尝试类似的东西时,它就像一个魅力。
有什么想法吗?我已经浏览了几次文档,但就是看不出哪里出错了。
我找到了一种不同的方法来做到这一点。我没有使用 simple_form 的标准关联方法,而是简单地向 Select 下拉列表添加了一个集合,如下所示:
.row.padding-12-all
= builder.input :title_id,
:label_method => :name ,
:value_method => :id,
:collection => Title.all
我正在尝试使用 reform gem 实现嵌套。我有三个型号:
- 客户 (belongs_to :personal_details)
- 个人详细信息(belongs_to:标题)
- 标题(has_many:个人详细信息)
我正在尝试使用以下代码通过改革 gem 创建一个 CustomerForm:
/app/forms/customer_form.rb
class CustomerForm < Reform::Form
property :national_id
validates :national_id,
:presence => true
property :personal do
property :first_name
property :title
validates :first_name,
:presence => true
end
end
/app/controllers/customers_controller.rb
def new
@form = CustomerForm.new(Customer.new(personal: Personal.new))
end
/app/views/customers/new.html.haml
= simple_form_for @form, :url => customers_path do |f|
= f.input :national_id
= f.simple_fields_for :personal do |builder|
= builder.input :first_name
= builder.association :title
= f.button :submit, "Submit"
:title 属性在表单提交期间不会接收任何输入。 Title 和 PersonalDetail 之间的关系仅用于用 Title.name 列表填充下拉列表。如果我尝试上面的方法,我会收到一条错误消息,指出不存在关联:性别。当我使用基于标准模型的方法尝试类似的东西时,它就像一个魅力。
有什么想法吗?我已经浏览了几次文档,但就是看不出哪里出错了。
我找到了一种不同的方法来做到这一点。我没有使用 simple_form 的标准关联方法,而是简单地向 Select 下拉列表添加了一个集合,如下所示:
.row.padding-12-all
= builder.input :title_id,
:label_method => :name ,
:value_method => :id,
:collection => Title.all