gem cocoonを使った多対多のパラメータ送信ができない
現在、gemのcocoonを使って、動的にフォームを追加し、保存するようにしたいと考えています。
しかし、viewでは、フォームを追加したり削除したりなど、うまく動かすことができるのですが、送信してもうまくパラメーターが渡せていない状態となっています。
どのようにしたら、うまくパラメータを渡すことができ、登録できるのでしょうか?
テーブルは、多対多になっており、中間テーブルを置いています。
下記に現在のコードを記します。よろしくお願い致します。
controller
def new
@newarea = Area.new
@newarea.area_cities.build
end
def create
@newarea = Area.new(areacity_params)
respond_to do |format|
if @newarea.save
format.html { redirect_to [:admin, @newarea]
format.json { render :show, status: :created, location: [:admin, @newarea] }
else
format.html { render :new }
format.json { render json: @newarea.errors, status: :unprocessable_entity }
end
end
end
private
def areacity_params
params.require(:area).permit(:code, :prefecture_id, area_cities_attributes: [:id, :city_id, :area_id, :_destroy])
end
view
= form_for @newarea, :url => {:action => 'create'} do |f|
= f.hidden_field :prefecture_id, :value => @prefecture.id
= f.hidden_field :code, :value => @area.code + 1
= f.fields_for :area_cities do |builder|
= render 'area_city_fields', f: builder
= link_to_add_association "エリアを追加する", f, :area_cities
%br
= link_to "キャンセル", admin_locations_path, class: "btn btn-default"
= f.submit "保存", class: "btn btn-primary"
model
city.rb
class City < ApplicationRecord
belongs_to :prefecture
has_many :requests has_many :area_cities, dependent: :destroy
has_many :cities, through: :area_cities
end
area.rb
class Area < ApplicationRecord
belongs_to :prefecture
has_many :area_cities, dependent: :destroy
has_many :cities, through: :area_cities
accepts_nested_attributes_for :area_cities, allow_destroy: true
end
area_city.rb
class AreaCity < ApplicationRecord
belongs_to :area
belongs_to :city
validates :area_id, :city_id, :presence => true
end