質問編集履歴

5

misu

2022/04/20 07:04

投稿

hk5232
hk5232

スコア22

test CHANGED
File without changes
test CHANGED
@@ -130,56 +130,4 @@
130
130
  }
131
131
  ```
132
132
 
133
- 追記2
134
- このような形でのAjax通信を行えばうまくいけるかと思って試したのですが、
135
- params[:mapitem]が空と出てしまいます。。。
136
- ```javascript
137
- let items = gon.items;
138
- google.maps.event.addListener(map, 'idle',function() {
139
- var map_item = [];
140
133
 
141
- //地図の範囲内を取得
142
- var bounds = map.getBounds();
143
- mapNE_lat = bounds.getNorthEast().lat();
144
- mapSW_lat = bounds.getSouthWest().lat();
145
- mapNE_lng = bounds.getNorthEast().lng();
146
- mapSW_lng = bounds.getSouthWest().lng();
147
-
148
- // console.log(mapNE_lat);
149
- // console.log(mapSW_lat);
150
- //console.log(mapNE_lng);
151
- // console.log(mapSW_lng);
152
-
153
- const list = document.getElementById("list");
154
-
155
-
156
- var j = 0;
157
- for (var i = 0; i < items.length; i++) {
158
- if (mapNE_lat >= items[i]['lat'] && items[i]['lat'] >= mapSW_lat) {
159
- if (mapNE_lng >= items[i]['lng'] && items[i]['lng'] >= mapSW_lng) {
160
-        map_item[j] = items[i];
161
- j++;
162
- }
163
- }
164
- }
165
- console.log(map_item)
166
- $.ajax({
167
- url: '/items/search',
168
- type: 'GET',
169
- data: {
170
- map_item: map_item
171
- },
172
- });
173
- ```
174
- ```itemコントローラー
175
- def search
176
- @items = Item.all
177
- gon.items = @items
178
- @map_item = params[:map_item]
179
- end
180
- ```
181
- console.log(map_item)までは
182
- (2) [{…}, {…}]
183
- と二つのデータがmap_itemに入っているのを確認できるのですが、
184
- binding.pryでコントローラーでparams[:map_item]をみると
185
- nilと出てしまいます。

4

改善

2022/04/20 06:59

投稿

hk5232
hk5232

スコア22

test CHANGED
File without changes
test CHANGED
@@ -78,7 +78,7 @@
78
78
  と記述しないとページを開いた時点で処理がされてしまい、mapNE_latの値がないまま進んでしまうと考えていますが、ajax通信が行われたときというif条件式が調べても分かりませんでした。
79
79
 
80
80
  質問が複数になってしまい申し訳ありません。
81
- どうかご教授ください。
81
+ わかるものだけで構いませんのでどうかご教授ください。
82
82
 
83
83
  追記
84
84
  別のやり方としてこんなのも考えたのですが、うまくいきません。
@@ -129,3 +129,57 @@
129
129
  }
130
130
  }
131
131
  ```
132
+
133
+ 追記2
134
+ このような形でのAjax通信を行えばうまくいけるかと思って試したのですが、
135
+ params[:mapitem]が空と出てしまいます。。。
136
+ ```javascript
137
+ let items = gon.items;
138
+ google.maps.event.addListener(map, 'idle',function() {
139
+ var map_item = [];
140
+
141
+ //地図の範囲内を取得
142
+ var bounds = map.getBounds();
143
+ mapNE_lat = bounds.getNorthEast().lat();
144
+ mapSW_lat = bounds.getSouthWest().lat();
145
+ mapNE_lng = bounds.getNorthEast().lng();
146
+ mapSW_lng = bounds.getSouthWest().lng();
147
+
148
+ // console.log(mapNE_lat);
149
+ // console.log(mapSW_lat);
150
+ //console.log(mapNE_lng);
151
+ // console.log(mapSW_lng);
152
+
153
+ const list = document.getElementById("list");
154
+
155
+
156
+ var j = 0;
157
+ for (var i = 0; i < items.length; i++) {
158
+ if (mapNE_lat >= items[i]['lat'] && items[i]['lat'] >= mapSW_lat) {
159
+ if (mapNE_lng >= items[i]['lng'] && items[i]['lng'] >= mapSW_lng) {
160
+        map_item[j] = items[i];
161
+ j++;
162
+ }
163
+ }
164
+ }
165
+ console.log(map_item)
166
+ $.ajax({
167
+ url: '/items/search',
168
+ type: 'GET',
169
+ data: {
170
+ map_item: map_item
171
+ },
172
+ });
173
+ ```
174
+ ```itemコントローラー
175
+ def search
176
+ @items = Item.all
177
+ gon.items = @items
178
+ @map_item = params[:map_item]
179
+ end
180
+ ```
181
+ console.log(map_item)までは
182
+ (2) [{…}, {…}]
183
+ と二つのデータがmap_itemに入っているのを確認できるのですが、
184
+ binding.pryでコントローラーでparams[:map_item]をみると
185
+ nilと出てしまいます。

3

記述ミス

2022/04/20 05:49

投稿

hk5232
hk5232

スコア22

test CHANGED
File without changes
test CHANGED
@@ -86,6 +86,7 @@
86
86
  うまく名前や住所を表示して挿入できないでしょうか
87
87
 
88
88
  ```javascript
89
+ let items = gon.items;
89
90
  google.maps.event.addListener(map, 'idle',function() {
90
91
  var mapMarkerData = [];
91
92
 

2

記述ミス

2022/04/20 05:48

投稿

hk5232
hk5232

スコア22

test CHANGED
File without changes
test CHANGED
@@ -106,8 +106,8 @@
106
106
 
107
107
  var j = 0;
108
108
  for (var i = 0; i < items.length; i++) {
109
- if (mapNE_lat >= items[i]['latitude'] && items[i]['latitude'] >= mapSW_lat) {
109
+ if (mapNE_lat >= items[i]['lat'] && items[i]['lat'] >= mapSW_lat) {
110
- if (mapNE_lng >= items[i]['studios'] && items[i]['studios'] >= mapSW_lng) {
110
+ if (mapNE_lng >= items[i]['lng'] && items[i]['lng'] >= mapSW_lng) {
111
111
  var name = items[i]['name']
112
112
  var address = items[i]['address']
113
113
  var image = items[i]['image']

1

別例

2022/04/20 05:33

投稿

hk5232
hk5232

スコア22

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,52 @@
79
79
 
80
80
  質問が複数になってしまい申し訳ありません。
81
81
  どうかご教授ください。
82
+
83
+ 追記
84
+ 別のやり方としてこんなのも考えたのですが、うまくいきません。
85
+ どちらでも処理が行えればいいのですが、こちらはうまく値を表示できなくて困ってます。
86
+ うまく名前や住所を表示して挿入できないでしょうか
87
+
88
+ ```javascript
89
+ google.maps.event.addListener(map, 'idle',function() {
90
+ var mapMarkerData = [];
91
+
92
+ //地図の範囲内を取得
93
+ var bounds = map.getBounds();
94
+ mapNE_lat = bounds.getNorthEast().lat();
95
+ mapSW_lat = bounds.getSouthWest().lat();
96
+ mapNE_lng = bounds.getNorthEast().lng();
97
+ mapSW_lng = bounds.getSouthWest().lng();
98
+
99
+ // console.log(mapNE_lat);
100
+ // console.log(mapSW_lat);
101
+ //console.log(mapNE_lng);
102
+ // console.log(mapSW_lng);
103
+
104
+ const list = document.getElementById("list");
105
+
106
+
107
+ var j = 0;
108
+ for (var i = 0; i < items.length; i++) {
109
+ if (mapNE_lat >= items[i]['latitude'] && items[i]['latitude'] >= mapSW_lat) {
110
+ if (mapNE_lng >= items[i]['studios'] && items[i]['studios'] >= mapSW_lng) {
111
+ var name = items[i]['name']
112
+ var address = items[i]['address']
113
+ var image = items[i]['image']
114
+ j++;
115
+ list.insertAdjacentHTML(`afterend`, `
116
+ <div class='item-info'>
117
+ <h5 class='item-name2'>
118
+ <%= name %></h5>
119
+ <h5 class='item-name'>
120
+ <%= address %>
121
+ </h5>
122
+ <div class='item-img-content'>
123
+ <%= image_tag image, class: "item-img" %>
124
+ </div>
125
+ </div>
126
+ `);
127
+ }
128
+ }
129
+ }
130
+ ```