teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/01/12 22:20

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -8,4 +8,14 @@
8
8
  _favorite.html.erb の <%= post_image.id %> ここでエラーになるはず。
9
9
 
10
10
  どこか掲示するのを省略していませんか?
11
- PostImagesController から一番下のpartialまで、関連するfileを全部、省略なしに見せてください。
11
+ PostImagesController から一番下のpartialまで、関連するfileを全部、省略なしに見せてください。
12
+
13
+ 追記
14
+ indexに `<% @post_images.each do |post_image| %>` とあり、そのloopの中で`<%= render partial: 'post_images/post_images',` が実行されています。
15
+ で、そのpartialから _favorite.html.erb を呼んでいいねボタンを書いてますので、@post_imagesの数、つまりユーザの数だけ いいね がでてしまいます。
16
+ 良いねを一つにしたいなら `<% @post_images.each do |post_image| %>` のloopの外に出すのですが、、、、
17
+ でも
18
+ これ、[**この人に**良いね」ですよね? ですからユーザごとに出て正解では?
19
+ 問題は、「この人」がわからないこと。
20
+ `<%= render partial: 'post_images/post_images', collection: @post_images, as: :post_image %>`にて 一人ひとり書くところで @post_images 全体を渡しているのが問題です。
21
+ `<%= render partial: 'post_images/post_images', locals post_image: post_image %>`としてみてください。