掲示板サイトの投稿フォームに複数のチェックボックスが存在し、
「ユーザーがチェックした複数の項目がDBに保存される」という機能を実装しようとしております。
しかし、下記の通りのことを試してもデータベースに保存されません。
解決方法について、ご回答を頂けますと幸いです。
(Rails6.0)
#困っていること
check_boxヘルパーを使用して、チェックボックスにチェックをした項目がデータベースに保存される機能を実装しようとしているが、チェックした項目がDBに保存されない。
(チェックした都道府県がDBに保存されるという機能を実装したいです。)
#試したこと
◆手順1:下記の通り、データベースに必要なカラムを追加した。
class AddColumnsToMicroposts < ActiveRecord::Migration[6.0] def change add_column :microposts, :title, :string add_column :microposts, :prefecture, :string add_column :microposts, :day_of_activity, :string add_column :microposts, :url, :string end end
下記がコンソール上で確認済みのデータベースの構造です。
prefuctureの部分に、投稿フォームでチェックした都道府県を保存させたいです。
id: 324, content: "北海道", user_id: 1, created_at: Sun, 14 Mar 2021 05:38:55 UTC +00:00, updated_at: Sun, 14 Mar 2021 05:38:55 UTC +00:00, title: nil, prefecture: nil, day_of_activity: nil, url: nil>
◆手順2:投稿フォームにcheck_boxヘルパーを実装した。
#_micropost_form.html.erb <% %w(北海道 青森県 岩手県 宮城県 秋田県 山形県 福島県 茨城県 栃木県 群馬県 埼玉県 千葉県 東京都 神奈川県 新潟県 富山県 石川県 福井県 山梨県 長野県 岐阜県 静岡県 愛知県 三重県 滋賀県 京都府 大阪府 兵庫県 奈良県 和歌山県 鳥取県 島根県 岡山県 広島県 山口県 徳島県 香川県 愛媛県 高知県 福岡県 佐賀県 長崎県 熊本県 大分県 宮崎県 鹿児島県 沖縄県).each.with_index do |prefecture,i| %> <label> <%= f.check_box :prefecture, {multiple: true}, prefecture, nil %> #←「:prefuctureに入った値はDBに保存される」というコードを書いたつもりです。 <%= prefecture %> </label> <% end %>
◆手順3:rails consoleでprefuctureカラムにデータが保存されているか確認しましたが、「nil」となってしまいます。
prefuctureカラムは:stringと指定しているため文字列で保存されるはずだと考えているのですが、
なぜ保存されないのでしょうか。
ちなみに投稿フォームのviewはこちらの通り、表示されております。
以上でございます。
恐れ入りますが、ご確認のほどよろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。