質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

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

Ruby on Rails

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2945閲覧

アクティブハッシュから複数の値をプルダウンメニューで取得したい

ken_tail

総合スコア0

Ruby

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

Ruby on Rails

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/10/02 06:13

前提・実現したいこと

アクティブハッシュに追加したハッシュ内の複数の値をプルダウンメニューで選択し、情報を取得したいです。

発生している問題・エラーメッセージ

プルダウンの実装にf.collection_selectを使用していますが、引数の数に制限がありアクティブハッシュから複数の値を取得できない状況です。
実際には「name」の他に「price」や「kcal」の情報も、プルダウンメニューで選択された際に取得したいです。(プルダウンメニューに表示されるのはnameの値のみ)

ruby

1class Onigiri < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '--' }, 4 { id: 2, name: 'コク旨炒飯おむすび', price: 121, kcal:220, carbohydrate:39, protein:5, lipid:4, vitamin:0, mineral:0}, 5 { id: 3, name: '梅おむすび', price:100, kcal:185, carbohydrate:41, protein:3, lipid:1, vitamin:0, mineral:0 }, 6 { id: 4, name: '鮭おむすび', price: 139, kcal:188, carbohydrate:37, protein:6, lipid:2, vitamin:0, mineral:0 } 7 ] 8end
<%= form_with model: @order, url:orders_path, local: true do |f| %> <div class="article-box"> おにぎり <%= f.collection_select(:onigiri_id, Onigiri.all, :id, :name, {}, {class:"onigiri-select"}) %> </div> <div class="article-box">

試したこと

id以外をキー「all」の値としてネストすることで値を取得できないか試してみましたがエラーが起きます。

ruby

1{ id: 2, all:{ name: 'コク旨炒飯おむすび', price: 121, kcal:220, carbohydrate:39, protein:5, lipid:4, vitamin:0, mineral:0}},

ruby

1<%= f.collection_select(:onigiri_id, Onigiri.all, :id, :all[:name], {}, {class:"onigiri-select"}) %>

イメージ説明

よろしくお願いいたします。

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

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

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

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

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

gouf

2020/10/02 08:20

理想とする HTML の出力結果を (質問欄を編集して) 示せますか?
ken_tail

2020/10/02 12:38 編集

プルダウン ----       おにぎり   ←選択      サンドウィッチ 商品名   値段   kcal おにぎり  100    120 プルダウンで商品選択後に表に上記のような形で表示される状態を想定しています。
yukihide1188

2020/10/03 08:21

行いたいことは情報を取得し、 [ データベースに保存すること ] でしょうか? [ HTMLに出力すること ] でしょうか?
gouf

2020/10/03 09:19

1. JavaScript 側に JSON で <table/> 表示のためのデータを渡す 2. <select/> された内容が変わったときに <table/> のデータを書き換えるイベントを設定する といった処理の流れは想像できますか?
guest

回答1

0

自己解決

コントローラーにて「@onigiris = Onigiri.all」を追記し、HTMLにて下記のように書くことで全ての値をアクティブハッシュから取ってくることに成功しました。

ruby

1<%= form_with model: @order, url:orders_path, local: true do |f| %> 2 <div class="article-box"> 3 おにぎり 4 <%= f.collection_select(:onigiri_id, Onigiri.all, :id, :name, {}, {class:"onigiri-select"}) %> 5 <div id="onigiri"> 6 <% @onigiris.each do |onigiri| %> 7 <div id="<%=onigiri.id%>" style="display:none;"> 8 <p class="price"><%= onigiri.price %></p> 9 <p class="kcal"><%= onigiri.kcal %></p> 10 <p class="carbohydrate"><%= onigiri.carbohydrate %></p> 11 <p class="protein"><%= onigiri.protein %></p> 12 <p class="vitamin"><%= onigiri.vitamin %></p> 13 <p class="lipid"><%= onigiri.lipid %></p> 14 </div> 15 <% end %> 16 </div> 17 </div>

投稿2020/10/06 06:26

ken_tail

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問