【チーム開発】本日の進歩状況2020-08-04

・本日の作業

バリデーションなどでsaveが失敗した際にrenderで「new」アクションに戻るようにエラーハンドリングを行っています。

jsで入力欄や画像を表示してる部分が、render後には入力されていない状態で出品欄にきてしまいます。いろいろ調べていたのですが何も分からずメンターさんに相談しました。

 

画像投稿の部分ではcarriewaveを使っている場合はcashという機能を使うと上手くいくかもということでこれから調べていきます。

カテゴリー欄に関しては編集機能で初期値を表示するようにする記術

= f.select :category_id, options_for_select
(@category_parent_array.map{|c| [c[:name], c[:id],
{'data-category'=>c[:id]}]}, @product.category.parent.parent.id),
{}, { class: "product-information__category--select_form",
id: "parent_category"}
@product.category.parent.parent.id),
の部分を条件分岐させてselect欄を入力しておくと上手くいくのではとのことでした。
何だか少し手間取りそうなのでこのエラーハンドリングは後回したいと思います。
それとturbolinksを削除したことによりJavaScriptの記述をちょっと変更し、それだけでオッケーかと思っていたのですが思わぬ落とし穴が。
商品編集時にredirect_toで商品詳細ページに飛ぶようにしていたのですが、なぜか編集はされているのに商品詳細ページに飛ばなくなっていることも判明しました。
調べるとこれはすぐに答えが出てきました。
参考サイト
これもturbolinksを削除した影響だったみたいです。
form_withのコードを
= form_with model: @product do |f|
 から
= form_with model: @product, local: true do |f|
 とlocal: trueを追加したら直りました。
でもcreateの時は大丈夫なのになぜupdateの時はダメなのか。
謎ですね。
 
意外と手こずったrender関係。やはりプログラムは一筋縄ではいきません。
 明日からはまたマイページの実装の続きをやっていこうと思います。