質問: ### 実現したいこと 投稿フォームの実装 ### 前提 現在ruby on rails で初心者webプログラマのスキルを棚卸できるようなページを作ろうと考えています。 サイトの構成としては ![チェックボックス](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/2ad5fccee2bf9491cc50b190388ce885.png) 上記の様なチェックボックスにチェックしてもらい結果ページを表示して、足りていない箇所に気づいてもらう様な仕組みです。 そこで下記の様にデータベース設計をしました。(achievementのflagはユーザーが任意の項目にフラッグを立ててあとで確認できる様にする予定、今回は実装しない予定です。) ![データベース設計](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/ac8863d468f211e06c6c8056e6350c3c.png) このうち今回user achievement contentテーブルを使って実装をします。 contentテーブルには質問内容(180問程度)が格納されております それを使い上記チェックシートフォームみたいなものを作り、自分ができているレベルに応じてlevelカラムに数字をフォームで送信して、achievementテーブルでユーザーの達成度を管理しようと考えています。 ![contentテーブル中身](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3689631f4f932aaf809b3451e5f6a76c.png) ### 発生している問題 上記サイトの様に180問分の新しいachievementインスタンスを一つのボタンで送る方法がわかりません。参考になるサイトなどありましたらご教授いただけないでしょうか。 データベース設計がそもそも間違っているなどの指摘でも構いません。よろしくお願いいたします。 ### 試したこと foam_forでの実装 ### 補足情報(FW/ツールのバージョンなど) ruby '2.5.1' rails '~> 5.2.3' sqlite3 ここにより詳細な情報を記載してください。
回答: `flag`のことを抜きに考えると、`form_tag`を使って下記のようなHTMLを出力する案が浮かびました。 ``` 1. イライラする ほとんどない 時々ある よくある 2. 不安だ ほとんどない 時々ある よくある ... ``` コントローラ側では`params`をループして、キーが`level_X`であれば「_」以降を`content_id`とみなし、achievementインスタンスを作ってsaveしていくイメージです。`level`と`user_id`は送信値を使います。 もっと適切な方法があるかもしれませんが、こんな方法でも目的は達せられるんじゃないかと思いました。