【rails】「いいね」でアイコンを切り替える

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

「いいね」したらアイコンが切り替わるようにする

前回までで、「いいね」のデータベースを更新することができた

今回はデータベースだけじゃなく、アイコンも切り替わるようにする


postリクエストで「いいね」をする

active-heartを表示させたい

  $('.inactive-heart').on('click', () => {
    axios.post(`/articles/${articleId}/like`)
      .then((response) => {
        if (response.data.status === 'ok') {
          $('.active-heart').removeClass('hidden')
          $('.inactive-heart').addClass('hidden')
        }
      })
      .catch((e) => {
        window.alert('Error')
        console.log(e)
      })
  })
  1. responsestatus'ok'だったら
  2. .active-heartからhiddenクラスをremove(削除)する
  3. .inactive-hearthiddenクラスをadd(追加)する


deleteリクエストで「いいね」を外す

inactive-heartを表示させたい

  $('.active-heart').on('click', () => {
    axios.delete(`/articles/${articleId}/like`)
      .then((response) => {
        if (response.data.status === 'ok') {
          $('.active-heart').addClass('hidden')
          $('.inactive-heart').removeClass('hidden')
        }
      })
      .catch((e) => {
        window.alert('Error')
        console.log(e)
      })
  })
  1. responsestatus'ok'だったら
  2. .active-hearthiddenクラスをadd(追加)する
  3. .inactive-heartからhiddenクラスをremove(削除)する

考え方をおさえる

やっていることは、jsonのデータをやりとりしているだけ(APIを使っているだけ)

  1. javascriptでサーバーにリクエストを送る
  2. jsonでresponseが返ってきたら表示を切り替える

これでページをリロードせず、画面はそのままで表示だけ切り替えられるようになった

#DAY6