###前提・実現したいこと
突然の投稿失礼します。
Railsを使用して入力フォームを作成しているのですが、
1つの入力フォームで関係性を持つ複数のモデルに登録を行う際にエラーが発生し原因がわからず困っています。
###発生している問題・エラーメッセージ
ActiveRecord::RecordInvalid バリデーションに失敗しました: Delivery addresses request formを入力してください
###Controller
ruby
1 def show_request_form 2 # インスタンス生成 3 @request_form = RequestForm.new 4 @request_form.delivery_addresses.build 5 end 6 7 def test_regist 8 request_form = RequestForm.new(request_params) 9 request_form.save! # ここでエラーが発生します 10 end 11 12 private 13 def request_params 14 params.require(:request_form).permit(:shop_id, :product_id, :products_status_id, :zip_file_id, :shipping_address_id, 15 delivery_addresses_attributes:[:address_no, :tel_no] 16 ) 17 end
###View(erb)
html
1<%= form_for @request_form, :url => {:action => :test_regist} do |f| %> 2 <%= f.text_field :shop_id %><br> 3 <%= f.text_field :product_id %><br> 4 <%= f.text_field :products_status_id %><br> 5 <%= f.text_field :zip_file_id %><br> 6 <%= f.text_field :shipping_address_id %><br> 7 <%= f.fields_for :delivery_addresses do |d| %> 8 <%= d.text_field :address_no %> 9 <%= d.text_field :tel_no %> 10 <% end %> 11 <%= f.submit "登録", class: 'btn btn-default pull-right'%> 12<% end %>
###Model(RequestForm)
ruby
1class RequestForm < ApplicationRecord 2 belongs_to :product 3 belongs_to :shop 4 belongs_to :products_status 5 belongs_to :zip_file 6 belongs_to :shipping_address 7 8 has_many :delivery_addresses 9 accepts_nested_attributes_for :delivery_addresses 10end
###Model(DeriveryAddress)
ruby
1class DeliveryAddress < ApplicationRecord 2 belongs_to :request_form 3end
###補足情報
【Rails】複数のレコードを作成する。modelの関係性によって異なるform_for / fields_forの使い方
こちらを参考にして見たのですが、うまくいかない状態です。。。
追記:
Viewを以下のように修正した場合、エラーは出なくなりましたがレコードがRequestFormのみ登録され、DeriveryAddresには登録されませんでした。
<%= form_for @request_form, :url => {:action => :test_regist} do |f| %> ↓以下に修正 <%= form_for :request_form, :url => {:action => :test_regist} do |f| %>
バージョン
Ruby 2.3.1
Rails 5.0.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/15 09:06
2017/05/15 09:08
2017/05/15 09:12
2017/05/15 09:26