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

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

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

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

Q&A

1回答

592閲覧

[rails5]checkboxの入力内容を編集画面で扱いたい

aoiii

総合スコア1

Ruby on Rails 5

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

0グッド

0クリップ

投稿2021/10/03 14:26

前提・実現したいこと

新規登録時に入れたチェックを編集画面でも保持した状態で表示したい
それかチェックボックスどちらかを選択しないと編集更新ができないようにしたい

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

編集画面に遷移するとチェックボックスのチェックが入っていない状態になっています。この状態で1つ以上チェックを入れて更新ボタンをクリックすれば問題なく更新はされますが、1つもチェックを入れないで更新しようとするとエラーが出てしまいます。

イメージ説明

該当のソースコード

controller

1class Admin::ShopsController < ApplicationController 2 3def update 4 @shop = Shop.find(params[:id]) 5 @shop.update(shop_params) 6 redirect_to admin_shops_path, notice: "更新しました" 7end 8 9private 10 11def shop_params 12 eat_in = params[:status][:eat_in].present? ? params[:status][:eat_in] : "0" 13 take_out = params[:status][:take_out].present? ? params[:status][:take_out] : "0" 14 params.require(:shop).permit(:name, :image, :business_day, :budget, :area_id, :atmosphere_id, :atmosphere).merge(eat_in: eat_in, take_out: take_out) 15end 16 17end

edit

1<tr> 2 <td>販売形式</td> 3 <td> 4 <a><input type="checkbox" name="status[eat_in]" value="1" <%#= "checked='checked'" if @shop.status.include?(1) %>>イートイン</a> 5 <a><input type="checkbox" name="status[take_out]" value="1" <%#= "checked='checked'" if @shop.status.include?(1) %>>テイクアウト</a> 6 </td> 7</tr>

試したこと

コントローラーでinclude?メソッドを使って条件分岐させたり、edit.html.erbでコメントアウトしてる箇所でチェックボックスの内容を保持できないか書き方を変えて何パターンか試しました。

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

ruby 2.6.3
rails 5.2.5
Mac

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

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

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

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

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

guest

回答1

0

「新規登録時に入れたチェックを編集画面でも保持した状態で表示したい」ということですが、???なことがあります。
なぜ `f.check_box :eate_in` にしないのですか?
そうすれば shop_params の最初の2行が不要になり、エラーもでなくなります。
そうすれば 「新規登録時に入れたチェックを編集画面でも保持した状態で表示」されるようになります

投稿2021/10/04 04:06

編集2021/10/04 04:08
winterboum

総合スコア23416

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

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

aoiii

2021/10/05 01:12

ご指摘ありがとうございます。 確かにチェックボックスはform_withにあるのにf.と書いてなかったことがまずおかしかったです。 editとnewのチェックボックスを <%= f.check_box :eat_in %> <%= f.label :eat_in, "イートイン" %> <%= f.check_box :take_out %> <%= f.label :take_out, "テイクアウト" %> に書き換えましたが同じエラーが出てしまいます。 書き方を調べf.以降を書き換えましたがどれもうまくいきませんでした。 よろしければアドバイスをいただけると助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問