質問編集履歴
2
モデル追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -110,4 +110,43 @@
|
|
|
110
110
|
= link_to "ホームへ戻る", messages_path
|
|
111
111
|
```
|
|
112
112
|
エラーが少し変わって下記のようになりました。
|
|
113
|
-

|
|
113
|
+

|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
**【9/27更新】**
|
|
117
|
+
|
|
118
|
+
モデルのコードは下記となります。上から「Message」「User」「Like」です。
|
|
119
|
+
```ここに言語を入力
|
|
120
|
+
class Message < ApplicationRecord
|
|
121
|
+
belongs_to :user
|
|
122
|
+
|
|
123
|
+
validates :content, presence: true
|
|
124
|
+
|
|
125
|
+
has_many :likes
|
|
126
|
+
has_many :liked_users, through: :likes, source: :user
|
|
127
|
+
end
|
|
128
|
+
```
|
|
129
|
+
```ここに言語を入力
|
|
130
|
+
class User < ApplicationRecord
|
|
131
|
+
# Include default devise modules. Others available are:
|
|
132
|
+
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
|
|
133
|
+
devise :database_authenticatable, :registerable,
|
|
134
|
+
:recoverable, :rememberable, :validatable
|
|
135
|
+
|
|
136
|
+
validates :name, presence: true, uniqueness: true
|
|
137
|
+
|
|
138
|
+
has_many :messages
|
|
139
|
+
has_many :likes
|
|
140
|
+
has_many :liked_messages, through: :likes, source: :message
|
|
141
|
+
def already_liked?(message)
|
|
142
|
+
self.likes.exists?(message_id: message.id)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
```
|
|
146
|
+
```ここに言語を入力
|
|
147
|
+
class Like < ApplicationRecord
|
|
148
|
+
belongs_to :message
|
|
149
|
+
belongs_to :user
|
|
150
|
+
validates_uniqueness_of :message_id, scope: :user_id
|
|
151
|
+
end
|
|
152
|
+
```
|
1
追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -49,4 +49,65 @@
|
|
|
49
49
|
end
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
アドバイスを頂ければ幸いでございます。
|
|
52
|
+
アドバイスを頂ければ幸いでございます。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
**【9/26更新】**
|
|
56
|
+
上記エラー文に「undefined method `message_likes_path'」 とあったので、pathを調べるために、rails routesを確認しました。
|
|
57
|
+
```ここに言語を入力
|
|
58
|
+
Prefix Verb URI Pattern Controller#Action
|
|
59
|
+
new_user_session GET /users/sign_in(.:format) devise/sessions#new
|
|
60
|
+
user_session POST /users/sign_in(.:format) devise/sessions#create
|
|
61
|
+
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
|
|
62
|
+
new_user_password GET /users/password/new(.:format) devise/passwords#new
|
|
63
|
+
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
|
|
64
|
+
user_password PATCH /users/password(.:format) devise/passwords#update
|
|
65
|
+
PUT /users/password(.:format) devise/passwords#update
|
|
66
|
+
POST /users/password(.:format) devise/passwords#create
|
|
67
|
+
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
|
|
68
|
+
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
|
|
69
|
+
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
|
|
70
|
+
user_registration PATCH /users(.:format) devise/registrations#update
|
|
71
|
+
PUT /users(.:format) devise/registrations#update
|
|
72
|
+
DELETE /users(.:format) devise/registrations#destroy
|
|
73
|
+
POST /users(.:format) devise/registrations#create
|
|
74
|
+
root GET / messages#index
|
|
75
|
+
user_message_likes POST /users/:user_id/messages/:message_id/likes(.:format) likes#create
|
|
76
|
+
user_message_like DELETE /users/:user_id/messages/:message_id/likes/:id(.:format) likes#destroy
|
|
77
|
+
user_messages GET /users/:user_id/messages(.:format) messages#index
|
|
78
|
+
POST /users/:user_id/messages(.:format) messages#create
|
|
79
|
+
edit_user GET /users/:id/edit(.:format) users#edit
|
|
80
|
+
user PATCH /users/:id(.:format) users#update
|
|
81
|
+
PUT /users/:id(.:format) users#update
|
|
82
|
+
```
|
|
83
|
+
prefixに「user_message_likes」とあったので、「message_likes_path」を「user_message_likes_path」に変更しました。また追加で、引数を最上部の配列の「m」に変更し、viewファイルを下記のようにしました。
|
|
84
|
+
```ここに言語を入力
|
|
85
|
+
.messages
|
|
86
|
+
- @messages.each do |m|
|
|
87
|
+
|
|
88
|
+
.message
|
|
89
|
+
.takerface
|
|
90
|
+
%img{alt: "userface", src: "https://imgc.eximg.jp/i=https%253A%252F%252Fs.eximg.jp%252Fexnews%252Ffeed%252FRen_ai%252FRen_ai_188420_6aed_1.jpg,zoom=600,quality=70,type=jpg"}/
|
|
91
|
+
.contents
|
|
92
|
+
.takername
|
|
93
|
+
= m.user.name + " さんへ"
|
|
94
|
+
.letter
|
|
95
|
+
- if m.content.present?
|
|
96
|
+
%p.lower-message__content
|
|
97
|
+
= m.content
|
|
98
|
+
.credo
|
|
99
|
+
#仕事好き #親身心 #人生を変える
|
|
100
|
+
.like
|
|
101
|
+
%h3
|
|
102
|
+
いいね件数: #{m.likes.count}
|
|
103
|
+
- if current_user.already_liked?(m)
|
|
104
|
+
= button_to 'いいねを取り消す', user_message_like_path(m), method: :delete
|
|
105
|
+
- else
|
|
106
|
+
= button_to 'いいね', user_message_likes_path(m)
|
|
107
|
+
%h2 いいねしたユーザー
|
|
108
|
+
- m.liked_users.each do |user|
|
|
109
|
+
%li= user.email
|
|
110
|
+
= link_to "ホームへ戻る", messages_path
|
|
111
|
+
```
|
|
112
|
+
エラーが少し変わって下記のようになりました。
|
|
113
|
+

|