前提・実現したいこと
1つのフォームから同じモデルに2つの異なるレコードを登録したいと思っています。
その際に、テーブルに登録しないパラメータの受け渡しを行いたいのですが、うまく登録できません。
登録するパラメータ bank_id
登録しないパラメータ bank_id_from bank_id_to
本来であればSQL文が下記のようになってほしいのですが、Unpermitted parametersが問題なのかうまくできません。
console
1【現状】 2INSERT INTO `transactions` (`company_id`, `created_at`, `updated_at`) … 3↓ 4【期待する結果】 5INSERT INTO `transactions` (`bank_id`, `company_id`, `created_at`, `updated_at`) …
どうぞよろしくお願いいたします。
発生している問題・エラーメッセージ
console
1Parameters: {"utf8"=>"✓", 2"authenticity_token"=>"BPFMj1KACIE9vdvMbqQYHIfgXvu6mEC2Sr7aXNwlHF2KXf0RFBkJlfASxziMuAfJEzLpGxz6MQJjuabXRPysBw==", 3"transaction"=>{ "bank_id1"=>"5","bank_id2"=>"9", "company_id"=>"55"}, "commit"=>"登録"} 4 User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 5 ↳ vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98 6Unpermitted parameters: :bank_id1, :bank_id2 7Unpermitted parameters: :bank_id1, :bank_id2 8Unpermitted parameters: :bank_id1, :bank_id2 9Unpermitted parameters: :bank_id1, :bank_id2 10 (0.3ms) BEGIN 11 ↳ app/controllers/transactions_controller.rb:178 12 Transaction Create (0.3ms) INSERT INTO `transactions` (`company_id`, `created_at`, `updated_at`) VALUES ( 55, '2019-04-09 15:53:30', '2019-04-09 15:53:30') 13 ↳ app/controllers/transactions_controller.rb:178 14 (0.9ms) COMMIT 15 ↳ app/controllers/transactions_controller.rb:178 16 (0.2ms) BEGIN 17 ↳ app/controllers/transactions_controller.rb:178 18 Transaction Create (0.3ms) INSERT INTO `transactions` (`company_id`, `created_at`, `updated_at`) VALUES ( 55, '2019-04-09 15:53:30', '2019-04-09 15:53:30') 19 ↳ app/controllers/transactions_controller.rb:178 20 (0.5ms) COMMIT 21 ↳ app/controllers/transactions_controller.rb:178
該当のソースコード
transactionform
1<select name="transaction[bank_id1]"> 2 <option value="5">みずほ銀行</option> 3 <option value="9">三井住友銀行</option> 4</select> 5 6<select name="transaction[bank_id2]"> 7 <option value="5">みずほ銀行</option> 8 <option value="9">三井住友銀行</option> 9</select> 10 11<%= form.text_field :company_id %>
controller
1def register_exe 2 3 first_transaction_params = transaction_params 4 first_transaction_params[:bank_id] = transaction_params[:bank_id1] 5 6 second_transaction_params = transaction_params 7 second_transaction_params[:bank_id] = transaction_params[:bank_id2] 8 9 @first_transaction = Transaction.new(first_transaction_params) 10 @second_transaction = Transaction.new(second_transaction_params) 11 12 @first_transaction.save 13 @second_transaction.save 14 15end 16
試したこと
Unpermitted parametersの表示があるので、モデルにattr_writerを記載したのですが、Unpermitted parametersの表示は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.2
rails 5.2.2
回答について
ベストアンサーにさせていただいたruby_mathさんがコメント欄で回答頂いたselect_tagで期待する結果を得ることができました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/09 23:41
2019/04/09 23:48
2019/04/10 00:11
2019/04/10 00:26
退会済みユーザー
2019/04/10 00:30
2019/04/10 00:31
2019/04/10 00:31
2019/04/10 00:50 編集
2019/04/10 00:58