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

質問編集履歴

2

モデル追記

2020/09/27 01:13

投稿

skem
skem

スコア1

title CHANGED
File without changes
body CHANGED
@@ -110,4 +110,43 @@
110
110
  = link_to "ホームへ戻る", messages_path
111
111
  ```
112
112
  エラーが少し変わって下記のようになりました。
113
- ![イメージ説明](8262016f858327d76ebe80dcb4bee5ac.png)
113
+ ![イメージ説明](8262016f858327d76ebe80dcb4bee5ac.png)
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

追記

2020/09/27 01:13

投稿

skem
skem

スコア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
+ ![イメージ説明](8262016f858327d76ebe80dcb4bee5ac.png)