【发布时间】:2014-06-05 04:49:26
【问题描述】:
我正在尝试创建一个多重嵌套表单,我一直在关注这个示例 http://guides.rubyonrails.org/form_helpers.html#building-complex-forms
我们来了
- 人员 > has_many :addresses
- 地址 > 归属地:人
但如果我想添加 City 表,我会拥有
- 人员 > has_many :addresses
- 地址 > 归属地:人,归属地:城市
- 城市 > has_many :addresses
当我尝试在表单中添加字段 City 作为 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
我不知道如何处理人员参数,我有这个:
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模型。 -
我修改了原始帖子以显示 3 个模型
标签: ruby-on-rails forms ruby-on-rails-4 nested-forms