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

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

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

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

Q&A

1回答

1368閲覧

form_withを使いラジオボタンの記入の仕方がわかりません。

yu.yu.yu

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2021/07/15 11:45

編集2021/07/15 22:56

前提・実現したいこと

form_withに使いラジオボタンの記入の仕方がわかりません。
又、nameとvalueの使い方が分からず、シークエルプロに保存されません。

Parameters: {"authenticity_token"=>"OB1cWXcSMwdS/I3hL67MIym8WYKVpCrPcDm3x0pbh8Ii1W3LJt9wna8V9pplxzK7d43SXTCtR/3C+DsKSR+JUw==", "income"=>{"income"=>"uber"}, "price"=>"11111", "commit"=>"Create Income"} Unpermitted parameter: :income ターミナルにて、エラー出てて保存できない状態です。

該当のソースコード

_form.html.erb

<div class='type'> <div class='type-contents'> <%= form_with(model: @income, local: true) do |form| %> <%= form.radio_button :income, :uber %> <%= form.label :income, "ウーバーイーツ", {value: :uber, style: "display: inline-block;"} %> <%= form.radio_button :income, :uber %> <%= form.label :income, "食費", {value: :food, style: "display: inline-block;"} %> <%= form.radio_button :income, :food %> <%= form.label :income, "日用品", {value: :male, style: "display: inline-block;"} %> <%= form.radio_button :income, :female %> <%= form.label :income, "交通費", {value: :female, style: "display: inline-block;"} %><br /> <%= form.radio_button :income, :male %> <%= form.label :income, "積み立て費", {value: :male, style: "display: inline-block;"} %> <%= form.radio_button :income, :female %> <%= form.label :income, "クレジットカード", {value: :female, style: "display: inline-block;"} %> <%= form.radio_button :income, :male %> <%= form.label :income, "ファッション", {value: :male, style: "display: inline-block;"} %> <%= form.radio_button :income, :female %> <%= form.label :income, "その他", {value: :female, style: "display: inline-block;"} %><br /> <input type="text" name="price" id="price" placeholder="金額"><br />

<%= form.submit %>
<% end %>

</div> ```

試したこと

ウーバーイーツ〜その他の中の1つと金額を組み合わせたいです。
name部分とvalue部分の記述も知りたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/07/15 20:32

form_with はどこに書いたんでしょう。
yu.yu.yu

2021/07/15 22:58

返信ありがとうございます。 一応、form_withに変更したのですが、保存されません。 value部分の記述と、この場合マイグレーションファイルの記述も教えてもらいたいです。
yu.yu.yu

2021/07/19 06:43

ありがとうございます。解決できました。
guest

回答1

0

nameとvalueの使い方は合っているかと思いますが、labelの使い方が間違っています。

form_withのradio_buttonの基本形は下記です。

<%= form.radio_button :保存されるカラム名, "カラムに保存される内容" %>

記載されているコードを解説していくと

<%= form.radio_button :income, :uber %>

incomeカラムにuberを保存させる。ちなみにincome(保存されるカラム名)がnameにあたり、uber(カラムに保存される内容)がvalueにあたります。

ただ、labelのvalueを書くことによって2重ハッシュになってしまい、controller側でパラメーターがうまく受け取れていません。エラーのパラメーターは"income"=>{"income"=>"uber"}, "price"=>"11111",となっています。"price" => "111111"の形が正常なので、incomeも"income" => "uber"の形にすればcontroller側で受け取れます。
なので、labelの valueは削除してください。
あと現状のコードだとlabelが機能していませんので、下記のようにincome_uberとするとlabelが機能するかと思います。

<%= form.label :income_uber, "ウーバーイーツ", {style: "display: inline-block;"} %>

あとはuber以外も同様に訂正して、controller側の記述に問題なければ保存されるかと思います。

投稿2021/07/16 16:34

J_O

総合スコア143

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問