回答編集履歴

3

追記3

2019/12/22 10:05

投稿

siruku6
siruku6

スコア1382

test CHANGED
@@ -167,3 +167,57 @@
167
167
 
168
168
 
169
169
  こうなると、もう get_schedule_id というメソッドそのものがもしかしたらいらないかもしれません。
170
+
171
+
172
+
173
+ ### 追記3(2019/12/22)
174
+
175
+
176
+
177
+ 次のところを治してみましょうか
178
+
179
+
180
+
181
+ ```erb
182
+
183
+ # 修正前
184
+
185
+ <% @users.each do |user| %>
186
+
187
+ <ul class="employee__box__list">
188
+
189
+ <li class="employee__box__list__name", id="leave", data-user-id="<%=user.id%>", data-schedule-id="<% user.schedules.ids.last %>">
190
+
191
+ <%= user.name %>
192
+
193
+ </li>
194
+
195
+ </ul>
196
+
197
+ <% end %>
198
+
199
+
200
+
201
+ # 修正後 (user.schedules.ids.lastの前に'='を追加しただけです)
202
+
203
+ <% @users.each do |user| %>
204
+
205
+ <ul class="employee__box__list">
206
+
207
+ <li class="employee__box__list__name", id="leave", data-user-id="<%=user.id%>", data-schedule-id="<%= user.schedules.ids.last %>">
208
+
209
+ <%= user.name %>
210
+
211
+ </li>
212
+
213
+ </ul>
214
+
215
+ <% end %>
216
+
217
+ ```
218
+
219
+
220
+
221
+ それから、`user.schedules.ids.last` については、それで動くのであれば問題ないですが、おそらく`user.schedules.last.id` の方が一般的な書き方になるので、もし動きがおかしい場合は、こちらに直しておいた方がよさそうです。
222
+
223
+ どちらでも動くのであれば、そのままで構いません。

2

情報追加に伴う追記

2019/12/22 10:05

投稿

siruku6
siruku6

スコア1382

test CHANGED
@@ -95,3 +95,75 @@
95
95
  @schedule は、user 毎に1個画面に表示できればいいのでしょうか?
96
96
 
97
97
  それとも、userが持っているscheduleすべてを画面に表示する必要がありますか?
98
+
99
+
100
+
101
+ ### 追記2(2019/12/21)
102
+
103
+
104
+
105
+ なんとなくですが、どんなものを作ろうとしているかのイメージがはっきりして来ました
106
+
107
+ 次の部分の修正で、さらに求めるものには近づくと思います
108
+
109
+
110
+
111
+ ```ruby
112
+
113
+ <% @users.each do |user| %>
114
+
115
+ <ul class="employee__box__list">
116
+
117
+ <%# 修正前
118
+
119
+ <li class="employee__box__list__name", id="leave", data-user-id="<%=user.id%>", data-schedule-id="<% @schedule %>"><%= user.name %></li>
120
+
121
+ %>
122
+
123
+
124
+
125
+ <%# 修正後1
126
+
127
+ <li class="employee__box__list__name", id="leave", data-user-id="<%=user.id%>", data-schedule-id="<%= @schedule.id %>">
128
+
129
+ <%= user.name %>
130
+
131
+ </li>
132
+
133
+ %>
134
+
135
+
136
+
137
+ <%# 修正後2 %>
138
+
139
+ <li class="employee__box__list__name", id="leave", data-user-id="<%=user.id%>", data-schedule-id="<%= user.schedules.last.id %>">
140
+
141
+ <%= user.name %>
142
+
143
+ </li>
144
+
145
+ </ul>
146
+
147
+ <% end %>
148
+
149
+ ```
150
+
151
+
152
+
153
+ もうお気づきだと思いますが、@scheduleには、scheduleのレコードが一つしか入っていません。
154
+
155
+ 何回呼び出しても最後のscheduleしか呼び出せません。
156
+
157
+
158
+
159
+ もし users has_many schedules という関係のassociationが設定済みであれば、上記コードで個別user毎のscheduleが取得できると思います
160
+
161
+ (has_one だったら user.schedules.last.id のところは user.schedule.id でOK)
162
+
163
+
164
+
165
+ #### 補足
166
+
167
+
168
+
169
+ こうなると、もう get_schedule_id というメソッドそのものがもしかしたらいらないかもしれません。

1

情報追加に基づく追記

2019/12/21 07:22

投稿

siruku6
siruku6

スコア1382

test CHANGED
@@ -29,3 +29,69 @@
29
29
 
30
30
 
31
31
  他に対処できない問題が出てきたらまたコメントいただけたらと思っています。
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ ### 追記
40
+
41
+
42
+
43
+ #### 確認1
44
+
45
+
46
+
47
+ data-schedule-idの取得はこの行で行っているのでしょうか?
48
+
49
+ let schedule_id = $(this).data('id');
50
+
51
+ もしそうだとすると、
52
+
53
+ let schedule_id = $(this).data('schedule-id');
54
+
55
+ にしたら直るかもしれません。
56
+
57
+
58
+
59
+ なぜなら、次のソースでdata-user-idが取得できているからです。
60
+
61
+ let user_id = $(this).data('user-id');
62
+
63
+
64
+
65
+ #### 確認2
66
+
67
+
68
+
69
+ 次はどうにかして直さないといけなさそうです。
70
+
71
+ どう直すのかは私が決めることはできないのですが...
72
+
73
+ ```
74
+
75
+ def get_schedule_id <= schedule.idを取得するために使うメソッド、indexに渡して一覧で@schedule.idでscheduleのidを取得できるようにしている。
76
+
77
+ @schedules = Schedule.all
78
+
79
+ # これだと、@scheduleは1個しか作られない
80
+
81
+ # Schecdule.all のうち、一番最後のschが代入されているだけ
82
+
83
+ @schedules.each do |sch|
84
+
85
+ @schedule = sch
86
+
87
+ end
88
+
89
+ end
90
+
91
+ ```
92
+
93
+
94
+
95
+ @schedule は、user 毎に1個画面に表示できればいいのでしょうか?
96
+
97
+ それとも、userが持っているscheduleすべてを画面に表示する必要がありますか?