🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

解決済

2回答

2445閲覧

form_withを用いる際、初期値が代入されないようにする方法が分からない

Foxy

総合スコア43

Ruby on Rails

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

0グッド

0クリップ

投稿2021/03/19 09:51

前提・実現したいこと

現在Ruby on Railsの勉強をしているのですが、form_withを用いてユーザーに情報を入力してもらう際に、入力欄の初期値を空にしたいのですが、他のページから画面を移動してきた際に初期値としてbookモデルのtitle,bodyのデータが入ってしまいます。

該当のソースコード

html

1<!-- _form.html.erb --> 2<!-- このページをRenderでShow.htmlに呼び出す --> 3<%= form_with model: @book, local:true do |f| %> 4 <div class="field"> 5 <%= f.label :title %><br /> 6 <%= f.text_field :title, class: "form-control title" %> 7 </div> 8 9 <div class="field"> 10 <%= f.label :opinion %><br /> 11 <%= f.text_area :body, class: "form-control" %> 12 </div> 13 14 <%= f.submit 'Create Book', class: "btn btn-success" %> 15<% end %>

ruby

1#controller 2def show 3 @book = Book.find(params[:id]) 4 @user = @book.user 5end

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

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

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

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

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

guest

回答2

0

ベストアンサー

入力欄にデータが入力された状態で出力されてしまうのは、ざっくり説明すると

①controllerで定義したshowメソッド上にある

ruby

1@book = Book.find(params[:id])

により@bookに特定のBookのデータが入る

②_form.html.erbの

html

1<%= form_with model: @book, .....

で先ほどの@bookを指定することで、①で読み込んだBookのデータが反映される

という流れになっています。
そのため、winterboumさんもおっしゃられるように、

ruby

1@book = Book.new

と定義することで、今回の問題は解消するかと思います。

一方で、気になる点があるのですが、
show.html.erbにフォームを作成するのは初学者の教材などではあまり一般的ではなく、新規登録フォームを追加するのであれば、showのルートではなくnewのルートで定義するほうが簡単です。

showで記述した理由はなにかあるのでしょうか?もし学習途中ゆえの判断であり、私の問いかけに不快感を持たれてしまったら申し訳ございません。一方で、showでどうしても書きたい理由があるのであれば、何らかのサポートができれば、と考えています。

投稿2021/03/21 06:52

yoshi_10_11

総合スコア241

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

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

0

@book に なにか値をいれちゃってません?
@book = Book.new
とすれば入力初期値空になります

投稿2021/03/19 10:36

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問