我試圖創建多個嵌套形式,我一直在下面這個例子 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