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

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

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

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

HTML

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

Q&A

解決済

1回答

555閲覧

rails collection_selectで設定した【id】がHTML側だと変わってしまう現象について

beginner.tanaka

総合スコア23

Ruby on Rails

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

HTML

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

0グッド

0クリップ

投稿2020/10/12 04:46

前提・実現したいこと

アクティブハッシュを使い、データベースに保存する仕組みを作っているのですが、うまく保存ができません。

###エラーを追求した結果
ターミナルで、paramsを確認すると、アクティブハッシュで選択されたidが送られてないことが分かりました。
確認しましたが、コードの記述にも問題がない。。。。と思います。
そこで、検証ツールで見ると、VSコードで記述した,カラムid(アクティブハッシュのid)が、検証ツールでは違う記述になっていました。

このような事はあるのでしょうか?
ご教授のほどよろしくお願いいたします。

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

↓↓↓検証ツールで記述されている内容。(id="enneagram_type_type_result_id")

HTML

1<form action="/enneagram_types" accept-charset="UTF-8" method="post"> 2   <input type="hidden" name="authenticity_token"     3    value="kas2/elau1p6IktPDEp/bzRnBufx33Hk5OWFFtg691ReK8oKLJ7swzzSFoGMuXM7fa/nm2zedgLo/jZ+QRc3NA==" /> 4 <select class=":type_select" name="enneagram_type[type_result_id]" id="enneagram_type_type_result_id"><option value="1">--</option>

↓↓↓railsで記述している内容(:type_result_id)

rails

1 <%= form_with model: @enneagram_type,local: true do |form| %> 2 <%= form.collection_select(:type_result_id, TypeResult.all, :id, :name, {}, {class: ":type_select"}) %> 3 <%= form.submit "登録", class:"registerbtn"%> 4 <% end %>

↓↓↓ActiveHach model

rails

1class TypeResult < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '--'}, 4 { id: 2, name: 'TypeA'}, 5 { id: 3, name: 'TypeB'}, 6 { id: 4, name: 'TypeC'}, 7 { id: 5, name: 'TypeD'} 8 ] 9end

↓↓↓マイグレーションファイル

rails

1class CreateEnneagramTypes < ActiveRecord::Migration[6.0] 2 def change 3 create_table :enneagram_types do |t| 4 t.integer :type_result_id 5 t.timestamps 6 end 7 end 8end

検証ツールの画像

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

paramsを確認すると、アクティブハッシュで選択されたidが送られてないことが分かりました。

そもそも、idは送られません。ブラウザからフォーム送信される値のキーは、name属性によって指定するものです。

投稿2020/10/12 05:20

maisumakun

総合スコア146018

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

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

maisumakun

2020/10/12 05:22

name="enneagram_type[type_result_id]"によって送られた値は、params[:enneagram_type][:type_result_id]に入ります。
beginner.tanaka

2020/10/12 06:51

回答していただきありがとうございます。 質問になるのですが、 現状、ストロングパラメーターを使い、許可される情報を制限している状況なのですが、permitメソッド内に[:enneagram_type][:type_result_id]を許可する記述を追加するということなのでしょうか? データベースのカラム名は、type_result_idになるのですが。。。。
maisumakun

2020/10/12 06:55

はい、ふつうにparams.require(:enneagram_type).permit(:type_result_id)と書けば、params[:enneagram_type][:type_result_id]の値をpermitして回収できます。
beginner.tanaka

2020/10/12 07:49

ありがとうございます!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問