🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

855閲覧

[Ruby on Rails6]check_boxヘルパーの実装方法についてご質問

gussan-me

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/03/14 06:18

掲示板サイトの投稿フォームに複数のチェックボックスが存在し、
「ユーザーがチェックした複数の項目が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はこちらの通り、表示されております。
イメージ説明

以上でございます。
恐れ入りますが、ご確認のほどよろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ストロングパラメータにprefecture: []を追加することで解決しました。

def micropost_params params.require(:micropost).permit(:content, prefecture: []) end

投稿2021/03/15 00:13

gussan-me

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問