回答編集履歴

2

不要なpartialへの引数 likesを削除

2018/11/30 02:57

投稿

h_daido
h_daido

スコア824

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  <span id="like-of-<%= micropost.id %>">
78
78
 
79
- <%= render partial: 'likes/like', locals: { micropost: micropost, likes: @likes } %>
79
+ <%= render partial: 'likes/like', locals: { micropost: micropost } %>
80
80
 
81
81
  </span>
82
82
 

1

回答追記

2018/11/30 02:57

投稿

h_daido
h_daido

スコア824

test CHANGED
@@ -31,3 +31,131 @@
31
31
  micropostsを表示している一覧ページがありますよね?(そしてその中にいいねボタンがあると思うのですが)
32
32
 
33
33
  もしよければ、そこのerbテンプレートを貼ってみてください。修正方針が伝えられるかも。
34
+
35
+
36
+
37
+
38
+
39
+ ## <以下追記>
40
+
41
+ _micropost.html.erbを以下のようにしてみてください。
42
+
43
+ likeパーシャルをなんでも良いのでタグで囲ってそこにIDを付与します
44
+
45
+ ```html
46
+
47
+ <li id="<%= micropost.id %>">
48
+
49
+ <%= link_to gravatar_for(micropost.user, size: 50), micropost.user %>
50
+
51
+ <span class="user"><%= link_to micropost.user.name, micropost.user %></span>
52
+
53
+ <span class="content"><%= micropost.content %></span><br />
54
+
55
+ <span class="rate rate-<%= micropost.rate %>"></span><br />
56
+
57
+ <span class="type"><%= micropost.type %></span><br />
58
+
59
+ <span class="case"><%= micropost.case %></span><br />
60
+
61
+ <span class="timestamp">
62
+
63
+ Posted <%= time_ago_in_words(micropost.created_at) %> ago.
64
+
65
+ <% if current_user?(micropost.user) %>
66
+
67
+ <%= link_to "delete", micropost, method: :delete,
68
+
69
+ data: { confirm: "You sure?" } %>
70
+
71
+ <% end %>
72
+
73
+ </span>
74
+
75
+ <!-- 変更ここから -->
76
+
77
+ <span id="like-of-<%= micropost.id %>">
78
+
79
+ <%= render partial: 'likes/like', locals: { micropost: micropost, likes: @likes } %>
80
+
81
+ </span>
82
+
83
+ <!-- 変更ここまで -->
84
+
85
+ </li>
86
+
87
+ ```
88
+
89
+
90
+
91
+ 次に、create.js.erb, destroy.js.erbを変更します
92
+
93
+ ・上記のID変更に対応
94
+
95
+ ・partialに渡す変数を修正
96
+
97
+ どちらも同じで通ると思います。
98
+
99
+
100
+
101
+ ```javascropt
102
+
103
+ $("#like-of-<%= @micropost.id %>").html("<%= j(render partial: 'like', locals: { micropost: @micropost}) %>")
104
+
105
+ ```
106
+
107
+
108
+
109
+ 最後に作成したerbに合わせてコントローラーを修正します
110
+
111
+ ```ruby
112
+
113
+ class LikesController < ApplicationController
114
+
115
+ def create
116
+
117
+ # micropostを取得します。(before_actionをしっていたら共通化しましょう)
118
+
119
+ @micropost = Micropost.find(params[:micropost_id])
120
+
121
+
122
+
123
+ @like = Like.create(user_id: current_user.id, micropost_id: params[:micropost_id])
124
+
125
+
126
+
127
+ # 以下は多分必要ないので削除
128
+
129
+ # @likes = Like.where(micropost_id: params[:micropost_id])
130
+
131
+ # @microposts = Micropost.all
132
+
133
+ end
134
+
135
+
136
+
137
+ def destroy
138
+
139
+ # micropostを取得します。(before_actionをしっていたら共通化しましょう)
140
+
141
+ @micropost = Micropost.find(params[:micropost_id])
142
+
143
+
144
+
145
+ like = Like.find_by(user_id: current_user.id, micropost_id: params[:micropost_id])
146
+
147
+ like.destroy
148
+
149
+
150
+
151
+ # 以下は多分必要ないので削除
152
+
153
+ # @likes = Like.where(micropost_id: params[:micropost_id])
154
+
155
+ # @microposts = Micropost.all
156
+
157
+ end
158
+
159
+ end
160
+
161
+ ```