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

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

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

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

Q&A

解決済

1回答

2923閲覧

RubyonRailsでselectフォーム選択で同時に2つのカラムにデータを格納したい

hikaru923

総合スコア27

Ruby on Rails

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

0グッド

0クリップ

投稿2017/02/09 12:22

編集2017/02/09 12:34

###前提・実現したいこと

現在、利用者から管理者側に「私のこういう所を見てください!」という
PRポイントを選びメールを送信するという機能を
実装しようと思っています。(意義については聞かないでください…)

PRポイントとは、例えば
Userテーブル内のカラムにおきまして

pr_id = 1, pr_name = ゲームが上手い
pr_id = 2, pr_name = すぐに寝る

のような組で、それをselectフォームで
プルダウン形式で一つだけ選択し
メール一覧テーブル内のカラムにそれぞれ格納しようと思っています。

例えば、ゲームが上手い を選択したら pr_id =1とpr_name = ゲームが上手い
がMailテーブル内のカラムに格納されるといった形です。
ちなみにMailテーブル内のカラムは
[user_id,admin_id,pr_id,pr_name,created_at,updated_at]
みたいなのを想定しています。

###発生している問題・エラーメッセージ
一つのselectフォーム?で二つのカラムにデータを格納できません…
一フォーム、一カラム…
現状pr_idしか指定していないので、pr_nameにデータを格納出来ず。
同じ内容のプルダウンを二連続で配置するという方法しか思いつきません。
###該当のソースコード

ruby

1<%= c.select :pr_id, options_from_collection_for_select(User.where(["id",current_user.id]), :pr_id, :pr_name) %>

###試したこと
色々調べましたが、一つのselectフォームで二つのカラムに同時にデータを格納する方法を見つける事が出来ませんでした…
selectフォームの直後に
User.find(pr_id = :pr_id).pr_name
とか入れてみたり…そもそもどのようにしてプログラムが動いているのかの根本的な理解が足りていないので
確信を持てないままそれっぽいことを繰り返していました…そして撃沈。

###謝辞
問題解決にあたり、何か必要な情報などありましたら遠慮なくお申し付けください。随時追加させていただきます!
ここまで目を通していただき誠にありがとうございました。
何卒、お力添えをよろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

[user_id,admin_id,pr_id,pr_name,created_at,updated_at]
が間違いです。RDを使っている限り常に正規化すべきかを考えましょう
rails g model special_skills name:string
でspecial_skill model を作って
id name
1 ゲームが上手い
2 すぐに寝れる
とすると

送るデータは
[user_id,admin_id,pr_id,created_at,updated_at]
ですみます。
見る側でspecial_skillsと結合して、表示すれば無駄な情報のやりとりが必要なくなりますし

ruby

1<%= c.select :pr_id, options_from_collection_for_select(User.where(["id",current_user.id]), :pr_id, :pr_name) %>

ruby

1<%= c.select :pr_id, SpecialSkill.pluck(:name,:id) %>

ですみます。
ね、簡単でしょ

投稿2017/02/10 01:57

編集2017/02/10 02:01
moke

総合スコア2241

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

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

hikaru923

2017/02/10 05:11

やはり1つのフォームは1つの情報しか保持できないんですね。 モデル側の構造を変える事で対処したいと思います。 この度は丁寧なご返答誠にありがとうございました!
moke

2017/02/10 05:21 編集

そんなことはないのですが、それをする必要がない という回答です。勝手な推測ですが、特技を自由記述でユーザーが追加でき その選択肢を他の人が選べるようにしたいのかと思います。 そういう場合はその旨で質問を立てましょう。違ったアプローチを提示できます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問