質問編集履歴

1

1.フレームワークRuby on Railsをタグに追加しました。/2.console.logの記述を追記しました。/3.JQueryでの複製用コードを追記しました。

2020/05/19 03:39

投稿

admj
admj

スコア0

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
- ```html
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
-  <th rowspan="2" class="show-th">
53
+ <th rowspan="2" class="show-th">
32
-
54
+
33
-   <%= t.label :address, "スポット名(Google Mapで検索)", class:"th-font" %>
55
+ <%= t.label :address, "スポット名(Google Mapで検索)", class:"th-font" %>
34
-
56
+
35
-  </th>
57
+ </th>
36
-
58
+
37
-  <td>
59
+ <td>
38
-
60
+
39
-   <%= t.text_field :address, placeholder: "スポット名を入力", name:"address", id:"address_#{j}" %>
61
+ <%= t.text_field :address, placeholder: "スポット名を入力", name:"address", id:"address_#{j}" %>
40
-
62
+
41
-   <input name="onclick" onclick='codeAddress("<%= j %>")' type="button", value="検索"></input>
63
+ <input name="onclick" onclick='codeAddress("<%= j %>")' type="button", value="検索"></input>
42
-
64
+
43
-  </td>
65
+ </td>
44
-
66
+
45
- </tr>
67
+ </tr>
46
-
68
+
47
- <tr>
69
+ <tr>
48
-
70
+
49
-  <td colspan="2">
71
+ <td colspan="2">
50
-
72
+
51
-   <div name="map" id="map_<%= j %>" style="height: 300px; width: 80%;"></div>
73
+ <div name="map" id="map_<%= j %>" style="height: 300px; width: 80%;"></div>
52
-
74
+
53
-  </td>
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