我试图创建多个嵌套形式,我一直在下面这个例子 http://guides.rubyonrails.org/form_helpers.html#building-complex-forms轨道4种多层嵌套形式
在这里我们有
- 人>的has_many:地址
- 地址> belong_to :人
但是,如果我想添加城市表,我会有
- 人>的has_many:地址
- 地址> belongs_to的:人,belongs_to的:城市
- 城>的has_many:地址
问题是当我尝试在表单中的城市增加作为text_field不作为选择。我见过的所有例子都使用select来代替。
我想要做的是有一个窗体来创建一个人,允许人插入地址并显示城市作为文本字段。如果城市不存在于数据库中,那么创建它,如果不使用现有的(我想在这里我将不得不使用find_or_create_by?)。
人
class Person < ActiveRecord::Base
has_many :addresses
accepts_nested_attributes_for :addresses
end
地址
class Address < ActiveRecord::Base
belongs_to :person
belongs_to :city
accepts_nested_attributes_for :city
end
市
class City < ActiveRecord::Base
has_many :addresses
end
我不知道如何来处理每儿子PARAMS,我有这样的:
def person_params
params.require(:person).permit(:name, addresses_attributes: [:id, :kind, :street, cities_attributes: [:id, :city]])
end
查看
<%= form_for @person do |f| %>
Addresses:
<ul>
<%= f.fields_for :addresses do |addresses_form| %>
<li>
<%= addresses_form.label :kind %>
<%= addresses_form.text_field :kind %>
<%= addresses_form.label :street %>
<%= addresses_form.text_field :street %>
<%= addresses_form.fields_for :cities do |cities_form| %>
<%= cities_form.label :city %>
<%= cities_form.text_field :city %>
<% end %>
</li>
<% end %>
</ul>
<% end %>
当我尝试添加的城市,我得到这个错误
Unpermitted parameters: cities
而且它不会增加城市到数据库或地址。
我一直在试图解决这一段时间,我一直没能找到解决方案。任何想法我做错了什么?
向我们展示你的**'Person' **模型。 – Pavan
我修改了原帖以显示3个模型 – vander