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

質問編集履歴

1

コードを見やすく表示しました。

2017/11/03 09:18

投稿

shashamo
shashamo

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,24 +1,26 @@
1
1
  ###前提・実現したいこと
2
2
  プログラミング初心者です。Ruby on railsで投稿に対するいいね機能を実装したいと思い、Qiitaの
3
- railsとjsを使ったお手軽「いいね♡機能」を参考にさせていただいたのですが、画面を再ロードしないとお気に入りの数が増減しません。また2回連続でおす2回カウントされてしので、1回までに制限したいのですが方法がわからないので質問させていただきます。
3
+ railsとjsを使ったお手軽「いいね♡機能」を参考にさせていただいたのですが、画面を更新しないとお気に入りの数が増減しません。更新をせずもその画面表示を切り替えたいのですが方法がわかりませんので質問させていただきます。よろしくお願いいたします。
4
4
 
5
5
  ###発生している問題・エラーメッセージ
6
6
 
7
7
  エラーメッセージ
8
+ ```Ruby
8
- 55 POST http://localhost:8080/buildings/2/favorites 500 (Internal Server Error)
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
- ActionView::Template::Error (No route matches {:action=>"destroy", :building_id=>2, :controller=>"favorites", :id=>nil} missing required keys: [:id]):
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
- 4: <%= image_tag("icon_red_heart.svg") %>
13
+ Trace of template inclusion: app/views/favorites/create.js.erb
15
- 5: <span>
16
- 6: <%= @building.favorites_count %>
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
- </div>
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