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

質問編集履歴

4

jsのコードを追加しました。

2020/02/26 08:41

投稿

punchan36
punchan36

スコア105

title CHANGED
File without changes
body CHANGED
@@ -88,9 +88,9 @@
88
88
  <%= link_to("削除", "/users/#{@user.id}/destroy", {method: :post, data: {confirm: "Are you sure to delete your account?"}, class: "link"}) %>
89
89
  <% end %>
90
90
 
91
- <h3>
91
+ <div id="follow-btn">
92
92
  <%= render 'users/follow_form' %>
93
- </h3>
93
+ </div>
94
94
  <h4>
95
95
  <%= render 'users/stats' %>
96
96
  </h4>
@@ -319,6 +319,12 @@
319
319
  $("#followers").html('<%= @user.followers.count %>')
320
320
  ```
321
321
 
322
+ ### 該当のソースコード(index.js.erb)
323
+
324
+ ```javascript
325
+ $("#follow-btn").html("<%= escape_javascript(render partial: 'users/follow_form' %>")
326
+ ```
327
+
322
328
  ### 試したこと
323
329
 
324
330
  最近jQueryを用いページ内タブを実装したのですが、その際にもリロードをしないとタブの内容が切り替わらない事象が発生しました。そこでは「Turbolinks」の設定を変えるなどして解決しましたが、今回のフォローボタンではjQueryも使用していない為、解決策が分からず困っています。

3

js.erbのソースを2つ追加しました。

2020/02/26 08:41

投稿

punchan36
punchan36

スコア105

title CHANGED
File without changes
body CHANGED
@@ -305,6 +305,20 @@
305
305
  end
306
306
  ```
307
307
 
308
+ ### 該当のソースコード(relationships#create.js.erb)
309
+
310
+ ```Ruby
311
+ $("#user_<%= @user.id %>").html("<%= escape_javascript(render('users/follow_form', user: @user)) %>")
312
+ $("#followers").html('<%= @user.followers.count %>')
313
+ ```
314
+
315
+ ### 該当のソースコード(relationships#destroy.js.erb)
316
+
317
+ ```Ruby
318
+ $("#user_<%= @user.id %>").html("<%= escape_javascript(render('users/follow_form', user: @user)) %>")
319
+ $("#followers").html('<%= @user.followers.count %>')
320
+ ```
321
+
308
322
  ### 試したこと
309
323
 
310
324
  最近jQueryを用いページ内タブを実装したのですが、その際にもリロードをしないとタブの内容が切り替わらない事象が発生しました。そこでは「Turbolinks」の設定を変えるなどして解決しましたが、今回のフォローボタンではjQueryも使用していない為、解決策が分からず困っています。

2

空白のテンプレートが表示されたままになっていた為、消しました。

2020/02/25 10:50

投稿

punchan36
punchan36

スコア105

title CHANGED
File without changes
body CHANGED
@@ -305,18 +305,6 @@
305
305
  end
306
306
  ```
307
307
 
308
- ### 該当のソースコード
309
-
310
- ```ここに言語名を入力
311
- ソースコード
312
- ```
313
-
314
- ### 該当のソースコード
315
-
316
- ```ここに言語名を入力
317
- ソースコード
318
- ```
319
-
320
308
  ### 試したこと
321
309
 
322
310
  最近jQueryを用いページ内タブを実装したのですが、その際にもリロードをしないとタブの内容が切り替わらない事象が発生しました。そこでは「Turbolinks」の設定を変えるなどして解決しましたが、今回のフォローボタンではjQueryも使用していない為、解決策が分からず困っています。

1

コントローラのコードを2つ追加しました。

2020/02/25 10:42

投稿

punchan36
punchan36

スコア105

title CHANGED
File without changes
body CHANGED
@@ -131,6 +131,192 @@
131
131
  <% end %>
132
132
  ```
133
133
 
134
+ ### 該当のソースコード(relationships.controller.rb)
135
+
136
+ ```Ruby
137
+ class RelationshipsController < ApplicationController
138
+ def create
139
+ @user = User.find(params[:relationship][:following_id])
140
+ @current_user.follow!(@user)
141
+ respond_to do |format|
142
+ format.html { redirect_to @user }
143
+ format.js
144
+ end
145
+ end
146
+
147
+ def destroy
148
+ @user = Relationship.find(params[:id]).following
149
+ @current_user.unfollow!(@user)
150
+ respond_to do |format|
151
+ format.html { redirect_to @user }
152
+ format.js
153
+ end
154
+ end
155
+ end
156
+ ```
157
+
158
+ ### 該当のソースコード(users_controller.rb)
159
+
160
+ ```Ruby
161
+ class UsersController < ApplicationController
162
+ before_action :authenticate_user, {only: [:index, :show, :edit, :update]}
163
+ before_action :forbid_login_user, {only: [:new, :create, :login_form, :login]}
164
+ before_action :ensure_correct_user, {only: [:edit, :update]}
165
+
166
+ def index
167
+ @users = User.all.order(created_at: :desc)
168
+ end
169
+
170
+ def show
171
+ @user = User.find_by(id: params[:id])
172
+ @likes = Like.where(user_id: @user.id)
173
+ @currentUserEntry=Entry.where(user_id: @current_user.id)
174
+ @userEntry=Entry.where(user_id: @user.id)
175
+ if @user.id == @current_user.id
176
+ else
177
+ @currentUserEntry.each do |cu|
178
+ @userEntry.each do |u|
179
+ if cu.room_id == u.room_id then
180
+ @isRoom = true
181
+ @roomId = cu.room_id
182
+ end
183
+ end
184
+ end
185
+ if @isRoom
186
+ else
187
+ @room = Room.new
188
+ @entry = Entry.new
189
+ end
190
+ end
191
+ end
192
+
193
+ def follow
194
+ @user = User.find_by(id: params[:id])
195
+ end
196
+
197
+ def new
198
+ @user = User.new
199
+ end
200
+
201
+ def create
202
+ @user = User.new(
203
+ name: params[:name],
204
+ email: params[:email],
205
+ image_name: "default_user.jpg",
206
+ cover_image_name: "default_cover_user.jpg",
207
+ password: params[:password]
208
+ )
209
+ if @user.save
210
+ session[:user_id] = @user.id
211
+ flash[:notice] = "ユーザー登録が完了しました"
212
+ redirect_to("/users/#{@user.id}")
213
+ else
214
+ render("users/new")
215
+ end
216
+ end
217
+
218
+ def edit
219
+ @user = User.find_by(id: params[:id])
220
+ end
221
+
222
+ def update
223
+ @user = User.find_by(id: params[:id])
224
+ @user.name = params[:name]
225
+ @user.email = params[:email]
226
+ if params[:image]
227
+ @user.image_name = "#{@user.id}.jpg"
228
+ image = params[:image]
229
+ File.binwrite("public/user_images/#{@user.image_name}", image.read)
230
+ end
231
+ if params[:cover_image]
232
+ @user.cover_image_name = "#{@user.id}_cover.jpg"
233
+ cover_image = params[:cover_image]
234
+ File.binwrite("public/user_cover_images/#{@user.cover_image_name}", cover_image.read)
235
+ end
236
+ if @user.save
237
+ flash[:notice] = "ユーザー情報を編集しました"
238
+ redirect_to("/users/#{@user.id}")
239
+ else
240
+ render("users/edit")
241
+ end
242
+ end
243
+
244
+ def destroy
245
+ @user = User.find_by(id: params[:id])
246
+ @user.destroy
247
+ flash[:notice] = "アカウントを削除しました"
248
+ redirect_to("/posts/index")
249
+ end
250
+
251
+ def login_form
252
+ end
253
+
254
+ def login
255
+ @user = User.find_by(email: params[:email])
256
+ if @user && @user.authenticate(params[:password])
257
+ session[:user_id] = @user.id
258
+ flash[:notice] = "ログインしました"
259
+ redirect_to("/posts/index")
260
+ else
261
+ @error_message = "メールアドレスまたはパスワードが間違っています"
262
+ @email = params[:email]
263
+ @password = params[:password]
264
+ render("users/login_form")
265
+ end
266
+ end
267
+
268
+ def logout
269
+ session[:user_id] = nil
270
+ flash[:notice] = "ログアウトしました"
271
+ redirect_to("/login")
272
+ end
273
+
274
+ def likes
275
+ @user = User.find_by(id: params[:id])
276
+ @likes = Like.where(user_id: @user.id)
277
+ end
278
+
279
+ def ensure_correct_user
280
+ if @current_user.id != params[:id].to_i
281
+ flash[:notice] = "権限がありません"
282
+ redirect_to("/posts/index")
283
+ end
284
+ end
285
+
286
+ def top
287
+ @user = User.find_by(id: params[:id])
288
+ @likes = Like.where(user_id: @current_user.id)
289
+ end
290
+
291
+ def following
292
+ @title = "フォロー"
293
+ @user = User.find(params[:id])
294
+ @users = @user.followings
295
+ render 'show_follow'
296
+ end
297
+
298
+ def followers
299
+ @title = "フォロワー"
300
+ @user = User.find(params[:id])
301
+ @users = @user.followers
302
+ render 'show_follow'
303
+ end
304
+
305
+ end
306
+ ```
307
+
308
+ ### 該当のソースコード
309
+
310
+ ```ここに言語名を入力
311
+ ソースコード
312
+ ```
313
+
314
+ ### 該当のソースコード
315
+
316
+ ```ここに言語名を入力
317
+ ソースコード
318
+ ```
319
+
134
320
  ### 試したこと
135
321
 
136
322
  最近jQueryを用いページ内タブを実装したのですが、その際にもリロードをしないとタブの内容が切り替わらない事象が発生しました。そこでは「Turbolinks」の設定を変えるなどして解決しましたが、今回のフォローボタンではjQueryも使用していない為、解決策が分からず困っています。