質問編集履歴
1
コードを見やすく表示しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
###前提・実現したいこと
|
2
2
|
プログラミング初心者です。Ruby on railsで投稿に対するいいね機能を実装したいと思い、Qiitaの
|
3
|
-
railsとjsを使ったお手軽「いいね♡機能」を参考にさせていただいたのですが、画面を
|
3
|
+
railsとjsを使ったお手軽「いいね♡機能」を参考にさせていただいたのですが、画面を更新しないとお気に入りの数が増減しません。更新をせずともそのままの画面で表示を切り替えたいのですが、方法がわかりませんので質問させていただきます。よろしくお願いいたします。
|
4
4
|
|
5
5
|
###発生している問題・エラーメッセージ
|
6
6
|
|
7
7
|
エラーメッセージ
|
8
|
+
```Ruby
|
8
|
-
|
9
|
+
ActionController::UrlGenerationError in Favorites#create
|
9
10
|
|
11
|
+
Showing /Users/lcls/newpro/leapernew/app/views/favorites/_favorite.html.erb where line #3 raised:
|
10
|
-
|
12
|
+
No route matches {:action=>"destroy", :building_id=>7, :controller=>"favorites", :id=>nil} missing required keys: [:id]
|
11
|
-
1: <% if user_signed_in? %>
|
12
|
-
2: <% if @building.favorite_user(current_user.id) %>
|
13
|
-
3: <%= button_to building_favorite_path(@favorites, building_id: @building.id), method: :delete, id: "favorite-of-#{@building.id}", remote: true do %>
|
14
|
-
|
13
|
+
Trace of template inclusion: app/views/favorites/create.js.erb
|
15
|
-
5: <span>
|
16
|
-
|
14
|
+
Rails.root: /Users/lcls/newpro/leapernew
|
17
|
-
app/views/favorites/_favorite.html.erb:3:in `_app_views_favorites__favorite_html_erb___1601632791259020412_70094001324180'
|
18
|
-
app/views/favorites/create.js.erb:1:in `_app_views_favorites_create_js_erb___114290889073339878_70094001441200'
|
19
15
|
|
16
|
+
Application Trace
|
17
|
+
app/views/favorites/_favorite.html.erb:3:in `_app_views_favorites__favorite_html_erb__4167235874778328999_70128592674580'
|
18
|
+
app/views/favorites/create.js.erb:1:in `_app_views_favorites_create_js_erb__4231897082744261259_70128595192160'
|
19
|
+
```
|
20
20
|
###該当のソースコード
|
21
|
+
```Ruby
|
21
22
|
**buildings.controller.html.erb**
|
23
|
+
|
22
24
|
class BuildingsController < ApplicationController
|
23
25
|
|
24
26
|
def show
|
@@ -31,8 +33,10 @@
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
end
|
36
|
+
```
|
37
|
+
```Ruby
|
38
|
+
**favorites.controller.html.erb**
|
34
39
|
|
35
|
-
**favorites.controller.html.erb**
|
36
40
|
class FavoritesController < ApplicationController
|
37
41
|
|
38
42
|
before_action :set_building
|
@@ -53,19 +57,26 @@
|
|
53
57
|
end
|
54
58
|
|
55
59
|
end
|
60
|
+
```
|
61
|
+
```Ruby
|
62
|
+
**views/buildings/show.html.erb**
|
56
63
|
|
57
|
-
**views/buildings/show.html.erb**
|
58
64
|
<div class="button_wrapper">
|
59
65
|
<button class="button button1"><i class="fa fa-paper-plane-o fa-fw fa-lg" aria-hidden="true"></i>お問い合わせする</button>
|
60
66
|
<%= render partial: 'buildings/buildings', locals: { building: @building, favorites: @favorites, favorite: @favorite } %>
|
61
|
-
|
67
|
+
</div>
|
68
|
+
```
|
69
|
+
```Ruby
|
70
|
+
**views/buildings/_buildings.html.erb**
|
62
71
|
|
63
|
-
**views/buildings/_buildings.html.erb**
|
64
72
|
<span id="favorite-of-<%= @building.id %>">
|
65
73
|
<%= render partial: 'favorites/favorite', locals: { building: @building, favorites: @favorites, favorite: @favorite } %>
|
66
74
|
</span>
|
67
75
|
|
76
|
+
```
|
77
|
+
```Ruby
|
68
78
|
**views/favorites/_favorite.html.erb**
|
79
|
+
|
69
80
|
<% if user_signed_in? %>
|
70
81
|
<% if @building.favorite_user(current_user.id) %>
|
71
82
|
<%= button_to building_favorite_path(@favorites, building_id: @building.id), method: :delete, id: "favorite-of-#{@building.id}", remote: true do %>
|
@@ -91,13 +102,24 @@
|
|
91
102
|
</span>
|
92
103
|
<% end %>
|
93
104
|
|
105
|
+
```
|
106
|
+
```Javascript
|
94
107
|
**create.js.erb**
|
108
|
+
|
95
109
|
$("#favorite-of-<%= @building.id %>").html("<%= j(render partial: 'favorite', locals: { building: @building, favorites: @favorites, favorite: @favorite }) %>");
|
110
|
+
```
|
111
|
+
```Javascript
|
112
|
+
**destroy.js.erb**
|
96
113
|
|
97
|
-
**destroy.js.erb**
|
98
114
|
$("#favorite-of-<%= @building.id %>").html("<%= j(render partial: 'favorite', locals: { building: @building, favorites: @favorites, favorite: @favorite }) %>");
|
115
|
+
```
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
99
121
|
###試したこと
|
100
|
-
local変数の受け渡しがうまくいってないと予想して何度か書き直してみましたが、再
|
122
|
+
local変数の受け渡しがうまくいってないと予想して何度か書き直してみましたが、再読み込みなしではお気に入りボタンの表示が切り替わりませんでした。
|
101
123
|
|
102
124
|
###補足情報(言語/FW/ツール等のバージョンなど)
|
103
125
|
ruby 2.2.1p85
|