Open kodamarisa opened 3 days ago
ブックマークボタンをクリックして、ブックマーク一覧に追加されるが、ページ再読み込みにて星が枠線に戻ってしまう。
Bookmarkの登録が行われるが、リロードすると表示が意図したものになっていないのであれば、条件分岐やViewの見直しを行ったり検証するとよいかと思います。 1行・1メソッドすべて意味をきちんと理解して一つずつ見ていきましょう
<% if user_signed_in? || line_user_signed_in? %>
<% current_user_or_line_user = user_signed_in? ? current_user : line_user %>
<% if current_user_or_line_user&.bookmarks&.exists?(exercise: exercise) %>
<%= link_to '<i class="fa-solid fa-star"></i>'.html_safe,
exercise_bookmark_path(exercise, current_user_or_line_user.bookmarks.find_by(exercise: exercise)),
method: :delete,
remote: true,
id: "bookmark-button-#{exercise.id}",
class: "bookmark-btn btn btn-warning" %>
<% else %>
<%= link_to '<i class="fa-regular fa-star"></i>'.html_safe,
exercise_bookmarks_path(exercise),
method: :post,
remote: true,
id: "bookmark-button-#{exercise.id}",
class: "bookmark-btn btn btn-warning" %>
<% end %>
<% end %>
調べたら、current_user_or_line_userがnilであるためにブックマーク情報が取れていない状態でした。 なので、現在、ログイン動作でcurrent_user_or_line_userに値が渡されるかを確認しようとログアウトし、ログインをしようとしたところ、ログインにてユーザーに紐づいたカレンダーとそのカレンダーに紐づいたスケジュールが呼び出されず、 別の問題が出ています。なので、別のissuesを使用し、それについての質問を行います。
質問内容・実現したいこと ブックマークボタンとして、枠線の星(FontAwesomeのや<%= icon "far", "star" %>)が表示され、ブックマークされたら、塗りつぶされた星(FontAwesomeのや<%= icon "fas", "star" %>)が表示され、ブックマーク一覧に表示される。ブックマーク一覧や筋トレ一覧で、塗りつぶされた星を再度クリックし、ブックマークを外したら、ブックマーク一覧から削除され、枠線の星に戻るようにしたい。
現状発生している問題・エラーメッセージ
どの処理までうまく動いているのか
クリックして、枠線の星をクリックしたら、塗りつぶされた星に変わる。(ページ再読み込みで枠線に戻ってしまう)
ブックマークした筋トレがブックマーク一覧に追加される。(星は枠線のまま)
該当のソースコード app/controllers/bookmarks_controller.rb
app/controllers/exercises_controller.rb
app/views/boolmarks/_already_bookmarked.js.erb
app/views/bookmarks/_exercise/row.html.erb
app/views/bookmarks/create.js.erb
app/views/bookmarks/destroy.js.erb
ap/views/exercises/_bookmark.html.erb
app/views/exercises/_exercise_row.html.erb
app/views/exercises/show.html.erb
エラーから考えられる原因 ブックマーク一覧にて、枠線の星をクリックしたら、ブックマークに追加しようとするログが表示された。 それにより、ブックマーク自体の登録がうまく行っていないため、削除できないとわかった。 しかし、登録ができていないなら、なぜ、ブックマーク一覧に追加できるのかわからない。
試したこと destryコードの見直しをしていて、ログに気づきました。