Railsアプリに「いいね機能」を実装する方法




Railsアプリにいいね機能を実装する方法は??

Railsアプリでやってみたいのが「いいね機能」の実装です。

もはや世の中のアプリで「いいね機能」がないアプリは死んだも同然。ほぼすべてのアプリにいいね機能がついています。

ってことで、今日はその「いいね機能」をRailsアプリで実装する方法をまとめておきました。

 

例としてuserとtweetの2モデルを使って、userがある任意のtweetにいいねができる機能をつけていきます。

まず、基本的な実装方法からですね。

 

likeモデル作成

まずはいいね(like)モデルの作成です。

  • user_id(integer)
  • tweet_id(integer)

を持ったモデルを作ります。

コマンドは

ですね。

それが終わったら、最後に

を発動してデーターベースを更新しましょう。

 

コントローラーを作成

お次はコントローラーです。

いいね用のコントローラーは手動で作ってみましょう。

likes_controller.rb

ですね。

こちらをRailsアプリのファイル階層の「app > controllers」にぶちこみましょう。

今回はlikeモデルにビューファイルが必要ないので、コマンドでコントローラーを作成する必要がないのです。

 

ルーティングを設定

次はルーティング設定ですね。

次のように設定してあげましょう。

ポイントはgetではなくpostになっている点ですね。

いいねすると、いいねのデーターベースの値が変化しますので、tweetメソッドを採用します。

 

コントローラーにアクションを追加

あとは、空っぽのコントローラーにアクションを追加しましょう。

ルーティングでも出てきましたが、今回いいねにつけるのは

  1. create
  2. destroy

の2アクションです。

それぞれこのようになってますね。

 

いいねボタンを表示

最後にいいねボタンを表示します。

すでにいいねをしたユーザーかそうではないかによって、表記とリンク先を切り替え。

いいねをしたuser_idとログイン中のuser_idが一致するかどうかによって条件分岐させます。

 

いいね数をカウントしたい時はどうする?

あとは、いいね数をカウントできると面白いですね。

ここではcountメソッドを使っていきます。

 

具体的に言うとtweets_controller.rbのshowアクションで「@like_count」という変数を定義。

そして、likeのtweet_idが@tweet.idと一致したものをwhereメソッドで取得したものを代入。

 

それをtweetのビューファイルshow.html.erbで、

という形で表示させれば、いいね数のカウントが出てくるでしょう。

 

いいねを一覧で表示する

場合によっては、いいねしたデータを一覧で表示したい時があるかもしれません。

そういう時は次のステップを踏むと良いでしょう。

 

ルーティングを設定する

新しくuserのルーティングを追加です。

 

アクションを追加

次はアクションを追加。

userのコントローラーにlikesアクションを追加します。

 

ビューファイル追加

最後にビューファイルです。

新しくuserのフォルダ内に

likes.html.erb

を作って、そこにlikeしたtweetを表示しましょう。

まず

これでuserがいいねしたデーターの一覧を表示できるようになりましたね。

 

ぜひRailsアプリを作ったら、いいね機能の実装にもチャレンジしてみましょう。

 

それでは!

Lin

Pocket
LINEで送る




音生入力で楽にブログを書く技が満載!
ブログ音声入力術

音声入力の使い方から文章を書くコツまで完全網羅。ブログを書きたいすべての人向けの電子書籍




コメントを残す

メールアドレスが公開されることはありません。