質問: ### 前提・実現したいこと scaffoldを使わずに投稿できるものを作成しています。 投稿したものを編集できるようにしたいのですが、新規投稿の際に入れた値をデフォルトとして保持するにはどのようにすればよろしいでしょうか?また、編集した投稿がIndexページに戻ると新規投稿扱いされてしまいます。これを新規投稿ではなく、編集したものとするにはどの様にすればよいか?以上2つに詰まっております。わかる方がいらっしゃいましたらご教授を頂けますと幸いです。 memos_controller.rb ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/956ca6efa57cf11a74eb73b1c6659ec0.png) index.html.erb ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/7ddf1ba9e099023fe50eb37d9e535d6f.png) new.html.erb ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/cbcae05bdc5c2a204af09e562f7690ae.png) edit.html.erb ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/6037c6ccb2100d35dc57cb6f1de289fb.png) ### 補足情報(FW/ツールのバージョンなど) rails 5.2.3
回答: 1つ目については > > 新規投稿の際に入れた値をデフォルトとして保持するには > > > これの意味がわからないので回答は避けます。 2つ目は edit.html.erbのform_withが間違っています。 form_withはmodelで指定されたものがすでに登録済かによってPOSTとPATCHを自動で決定します。 `model: Memo.new`となっているため、登録済ではない→POST→createメソッド実行となります。 new.html.erbも同様ですが、controllerで`@memo = Memo.new`や`@memo = Memo.find(params[:id])`としているのですから、 ``` <%= form_with model: @memo do |f| %> ``` としましょう。