セレクトボックス選択後に通知時間を表示
現在、ruby on railsとtypescriptを使ってプログラムを書いております。
以下のようなウェブのフォームを作成したいと考えています。
- フォームで「カテゴリ」を選択する
カテゴリを選択してください -> [カテゴリーA, カテゴリーB, カテゴリーC]
2. 「カテゴリ」選択後にそのイベントを受け取り、categoryモデルが所持するnotified_atカラムの値に応じて、「通知日時」フォームを更新(通知時間は契約開始時間に加算される形で表示される)
使用例
name: | notified_at: |
---|---|
カテゴリA | 1か月後 |
カテゴリB | 2か月後 |
カテゴリC | 3か月後 |
- 契約日時を入力 契約開始日時 -> [2019/2/12]
- カテゴリセレクトフォームで「カテゴリA」を選択
- 「カテゴリA」の通知時間は1か月後に設定されているので、通知日時フォームは自動的に1ヶ月後の値が入力される
通知日時 -> [2019/3/12]
実装方法について
通知日時のフォームを更新する際に、データベースから値を読みこむ必要がありますが、
- Ajaxを用いて更新
- Htmlにテンプレート生成時にカテゴリidと通知時間の対応の表を見えないように埋め込んでおく
という2つの手法を思いつきました。
以下の2つの観点でいうとどちらのほうが優れているのでしょうか?
・パフォーマンス(表示されるスピード等)
・実装のしやすさ
また、これ以外に優れた実装方法があれば教えていただけると幸いです。
ソースコード
# カテゴリモデル category.rb class Category < ApplicationRecord enum notified_at: {half_year: 0, one_year: 1, two_years: 2} end
リッジポールを用いて以下のようなテーブルを作成します。
# 該当カテゴリのスキーマファイル category.schema create_table "categories", id: :integer, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC" do |t| t.integer "user_id" t.string "name" t.integer "notified_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["user_id"], name: "index_categories_on_user_id" end
補足情報
- categoryモデルはユーザが別の画面で自由に作成、通知時間と名前も自由に決めることができます
- htmlに埋め込む場合にもセキュリティには問題がないと考えておりますが、もしリスクがあればそれも教えていただけると幸いです
- フォームは契約書を作成するためのものです
あなたの回答
tips
プレビュー