質問編集履歴
1
1.フレームワークRuby on Railsをタグに追加しました。/2.console.logの記述を追記しました。/3.JQueryでの複製用コードを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
投稿フォームをJQueryで複製して複数投稿をできるものを作っています。
|
5
|
+
Ruby on Railsを使って作った投稿フォームを、JQueryで複製して複数投稿をできるものを作っています。
|
6
6
|
|
7
7
|
投稿フォームの複製はできているのですが、複製されたフォームでGoogleMap上に任意でマーカーを落とせるようにしたいです。
|
8
8
|
|
@@ -22,37 +22,67 @@
|
|
22
22
|
|
23
23
|
### 該当のソースコード
|
24
24
|
|
25
|
-
```
|
25
|
+
```
|
26
26
|
|
27
27
|
・・・
|
28
28
|
|
29
|
+
<!-- 投稿フォーム -->
|
30
|
+
|
31
|
+
<% j = 0 %>
|
32
|
+
|
33
|
+
<%= c.fields_for :travelogues do |t| %>
|
34
|
+
|
35
|
+
<!-- Jqueryで複製されるフォーム部分 -->
|
36
|
+
|
37
|
+
<div class="form-block" id="form-block">
|
38
|
+
|
39
|
+
<input name="del" type="button" value="この投稿を削除する" class="del del-button edit-form btn btn-md btn-danger ">
|
40
|
+
|
41
|
+
<table class="table">
|
42
|
+
|
29
|
-
<tr>
|
43
|
+
<tr>
|
44
|
+
|
30
|
-
|
45
|
+
<th class="show-th"><%= t.label "本文",class:"th-font" %></th>
|
46
|
+
|
47
|
+
<td><%= t.text_area :body, name:"body", class:"form-control" %></td>
|
48
|
+
|
49
|
+
</tr>
|
50
|
+
|
51
|
+
<tr>
|
52
|
+
|
31
|
-
|
53
|
+
<th rowspan="2" class="show-th">
|
32
|
-
|
54
|
+
|
33
|
-
|
55
|
+
<%= t.label :address, "スポット名(Google Mapで検索)", class:"th-font" %>
|
34
|
-
|
56
|
+
|
35
|
-
|
57
|
+
</th>
|
36
|
-
|
58
|
+
|
37
|
-
|
59
|
+
<td>
|
38
|
-
|
60
|
+
|
39
|
-
|
61
|
+
<%= t.text_field :address, placeholder: "スポット名を入力", name:"address", id:"address_#{j}" %>
|
40
|
-
|
62
|
+
|
41
|
-
|
63
|
+
<input name="onclick" onclick='codeAddress("<%= j %>")' type="button", value="検索"></input>
|
42
|
-
|
64
|
+
|
43
|
-
|
65
|
+
</td>
|
44
|
-
|
66
|
+
|
45
|
-
</tr>
|
67
|
+
</tr>
|
46
|
-
|
68
|
+
|
47
|
-
<tr>
|
69
|
+
<tr>
|
48
|
-
|
70
|
+
|
49
|
-
|
71
|
+
<td colspan="2">
|
50
|
-
|
72
|
+
|
51
|
-
|
73
|
+
<div name="map" id="map_<%= j %>" style="height: 300px; width: 80%;"></div>
|
52
|
-
|
74
|
+
|
53
|
-
|
75
|
+
</td>
|
54
|
-
|
76
|
+
|
55
|
-
</tr>
|
77
|
+
</tr>
|
78
|
+
|
79
|
+
</table>
|
80
|
+
|
81
|
+
<input type="button" value="投稿を追加する" class="add edit-form btn btn-md btn-danger">
|
82
|
+
|
83
|
+
</div>
|
84
|
+
|
85
|
+
<% end %>
|
56
86
|
|
57
87
|
・・・
|
58
88
|
|
@@ -60,6 +90,90 @@
|
|
60
90
|
|
61
91
|
```js
|
62
92
|
|
93
|
+
// 動的に投稿フォームを追加する用
|
94
|
+
|
95
|
+
let idNo = 1;
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
// class="add"がクリックされたらフォームをクローンする
|
100
|
+
|
101
|
+
$(document).on("click", ".add", function () {
|
102
|
+
|
103
|
+
// 投稿削除のボタンを表示させる
|
104
|
+
|
105
|
+
$("input[name=del]").removeClass("del-button");
|
106
|
+
|
107
|
+
$(this).parent()
|
108
|
+
|
109
|
+
// フォームをコピー
|
110
|
+
|
111
|
+
.clone(true)
|
112
|
+
|
113
|
+
// idを削除
|
114
|
+
|
115
|
+
.removeAttr("id")
|
116
|
+
|
117
|
+
// 新たにidを付与
|
118
|
+
|
119
|
+
.find("input[name=body]")
|
120
|
+
|
121
|
+
.attr("id", "body" + idNo)
|
122
|
+
|
123
|
+
.end()
|
124
|
+
|
125
|
+
.find("[name=map]")
|
126
|
+
|
127
|
+
.attr("id", "map_" + idNo)
|
128
|
+
|
129
|
+
.end()
|
130
|
+
|
131
|
+
.find("input[name=onclick]")
|
132
|
+
|
133
|
+
.attr("onclick", "codeAddress(" + idNo + ")")
|
134
|
+
|
135
|
+
.end()
|
136
|
+
|
137
|
+
.find("input[name=address]")
|
138
|
+
|
139
|
+
.attr("id", "address_" + idNo)
|
140
|
+
|
141
|
+
.end()
|
142
|
+
|
143
|
+
// 親要素の後にinsert
|
144
|
+
|
145
|
+
.insertAfter($(this).parent());
|
146
|
+
|
147
|
+
// ID番号加算
|
148
|
+
|
149
|
+
idNo++;
|
150
|
+
|
151
|
+
});
|
152
|
+
|
153
|
+
// class="del"がクリックされたらフォームを削除
|
154
|
+
|
155
|
+
$(document).on("click", ".del", function () {
|
156
|
+
|
157
|
+
// 2ヵ所で使うので選択された親要素を変数targetに格納
|
158
|
+
|
159
|
+
var target = $(this).parent();
|
160
|
+
|
161
|
+
// 変数targetの親要素下の要素数が1以下だったら
|
162
|
+
|
163
|
+
// 変数targetを削除
|
164
|
+
|
165
|
+
if(target.children().length > 1){
|
166
|
+
|
167
|
+
target.remove();
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
});
|
172
|
+
|
173
|
+
```
|
174
|
+
|
175
|
+
```js
|
176
|
+
|
63
177
|
let maps = [] //変数の定義
|
64
178
|
|
65
179
|
let geocoder //変数の定義
|
@@ -122,6 +236,8 @@
|
|
122
236
|
|
123
237
|
if (status == 'OK') {
|
124
238
|
|
239
|
+
console.log(results[0].geometry.location)
|
240
|
+
|
125
241
|
maps[j].setCenter(results[0].geometry.location); //検索値に最も近い結果の緯度・経度
|
126
242
|
|
127
243
|
let marker = new google.maps.Marker({
|
@@ -158,6 +274,6 @@
|
|
158
274
|
|
159
275
|
### 補足情報(FW/ツールのバージョンなど)
|
160
276
|
|
161
|
-
|
277
|
+
・Ruby
|
162
|
-
|
278
|
+
|
163
|
-
|
279
|
+
Rails 5.2.4.1
|