hiddy0329
@hiddy0329 (hiddy)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

フォームでプルダウンを作成し、既存のDBから持ってくる方法

解決したいこと

 Ruby on Railsで「伝票を簡単に作成できるアプリケーション」を作成中です。
現在データベース設計の段階なのですが、
 ユーザーが「伝票を新規に作成するときに、DBに登録されている商品からプルダウン式で選択できる」という機能を実装したいと考えています。

発生している問題

 ActiveHashを用いて、事前に商品を登録しておき、いざ伝票を作成するときは、そこから選べるようにすれば良いと考えたのですが、ユーザーに確認したところ、
「商品は新たに追加される場合もある」ということを確認したため、
ActiveHashを用いた実装だと、新たに追加したい時に、設計者側で追加はできるが、ユーザーが追加作業を行えないという問題点があります。

自分で試したこと

①「商品登録機能」を個別に実装し、商品は登録されるたびにデータベースに保存されるように実装しようと考えました。こうすることで商品の追加が合った場合にユーザーが思いのままに登録できます。

②「伝票作成機能」において、商品を入力する欄は、その時点で登録されている商品をデータベースから参照して、プルダウン形式で選べる様にしたいと考えました。

③しかし、既にデータベースに登録されている商品を参照する方法が思いつきません。

何かいい方法はないでしょうか。

0

1Answer

DBから商品名を取得し、for文で表示すると良いかと思います。

バックエンド:DBから商品取得
フロントエンド:selectタグ内のoptionタグにてfor文を利用し上記商品を選択肢として設定
といった形ですね。

イメージできますでしょうか。

0Like

Comments

  1. @hiddy0329

    Questioner

    回答ありがとうございます!
    「既に登録済みのDBから引っ張ってきた商品を選択肢として表示し、登録後は別の専用のデータベースに再度登録」といった流れになるでしょうか?
  2. 同じDBの同じtableに新規/上書きしてあげれば大丈夫ですよ。

    ご存知であれば恐縮ですが、念のため詳細フローを記載いたします。

    例えばですが、
    DB名:inventory
    Table名:t_itemMaster
    とあったとします。

    これは、inventoryというDBの中にt_itemMasterというtableが存在している状態です。

    t_itemMasterには下記のような2つのcolumn(カラム)が最低限必要かと思います。
    ID:int AUTO_INCREMENT PRIMARY_KEY ⇒ユニーク(重複無し)のレコードを判別するキーとなるカラム
    name:string NOT NULL ⇒商品名

    このTableに登録する際は、
    INSERT INTO inventory.t_itemMaster VALUES ("ポッキー");
    のようにSQLを作成しますよね。

    上記が実行されるとt_itemMaster内のデータ(レコード)は
    |ID|name|
    |1|ポッキー|
    のようになります。
    これは、INSERT文を用いてレコードを新規作成したため、IDが1のものが新規に登録されたためです。

    Tableに登録されたもの全件を取得するためには、
    SELECT * FROM t_itemMaster;
    を実行します。

    この結果は配列として受け取れますので、受け取った配列を繰り返し文(For文など)でレコードの数だけ繰り返し、HTMLのSELECTタグ内にあるOPTIONタグで表示してあげます。

    表示した後は純粋に表示しただけであるため、商品マスターは書き換わりません。
    したがって、HTML表示後にt_itemMasterへのSQLは実行する必要はありません。

    t_itemMaster内の既存レコードを修正したい場合は、
    UPDATE t_itemMaster SET name="プリッツ" WHERE ID=1;
    のようなSQLを実行してあげると情報の更新をすることができます。


    長文失礼しました。

Your answer might help someone💌