質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

372閲覧

Railsでいいね機能をmicropostのindexページに実装したいのですが、その方法が分かりません。

yoko11

総合スコア7

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/11/05 03:07

###前提・実現したいこと
こんにちは。Rails初心者のyokoといいます。
現在私はTwitterのようなSNSをRuby on Railsで作っており、非同期のいいね機能を実装しようとしているのですが、そのやり方が分かりません。
投稿したポスト(micropost)のそれぞれのページ(例えばmicropost/1)にいいね機能をつける方法はhttps://qiita.com/mikan3rd/items/21d716026b51331e53a1などを参考にして理解できたのですが、
投稿したポストの一覧ページ(microposts/index)にポストが10件あり、その一覧ページでそれぞれにいいねボタンをつけたい場合、どのようにしたらよいのでしょうか?

その方法や、もしくは何か参考になるページなどがあれば教えていただけるとありがたいです。
質問が分かりづらくて申し訳ないですが、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

やりたいことは、

microposts/index.html.haml
ーーーーーーーーー
|ポスト1 [いいね!]|
|ポスト2 [いいね!]|
|ポスト3 [いいね!]|
ーーーーーーーーー

のような一覧画面を作りたいということであっていますか?
であれば、質問者さんが挙げられているhttps://qiita.com/mikan3rd/items/21d716026b51331e53a1こちらのページがまさにそれをやっています。

具体的には、下記のように書けばできると思います。

ruby

1#views/microposts/index.html.haml 2#collectionに@micropostsを渡すと、@micropostsの数だけ繰り返し表示される 3= render partial: 'microposts/microposts', collection: @microposts

ruby

1#views/microposts/_microposts.html.haml 2= render micropost.content 3= render 'likes/like_links', micropost: micropost

ruby

1#views/likes/_like_links.html.haml 2#いいねボタン 3 if current_user.likes.find_by(micropost_id: micropost.id) 4 = link_to unlike_path(micropost.id), method: :delete, remote: true do 5 .btn.btn-default.glyphicon.glyphicon-heart{id: "heart-#{micropost.id}"} 6 = micropost.likes.count.to_s 7 - else 8 = link_to like_path(micropost.id), method: :post, remote: true do 9 .btn.btn-default.glyphicon.glyphicon-heart-empty{id: "heart-#{micropost.id}"} 10 = micropost.likes.count.to_s

的外れでしたらすみませんm(_ _)m

投稿2017/11/13 13:55

編集2017/11/13 13:57
sol_n

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoko11

2017/11/16 16:02

sol_nさんの仰るとおりでした。 ありがとうございます。 おかげでindexページにいいね機能を追加できました。 本当にありがとうございます。これからもよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問