前提・実現したいこと
railsで、To do listを作成しており、タスク追加機能を非同期通信で実装したいです。
JS上の変数HTMLに、taskとして描画する部分を定義したいのですが、下記記述通りで正しいでしょうか?
間違っていれば、訂正いただきたいです。
該当のソースコード
javascript
1function task() { 2 const submit = document.getElementById("submit") 3 console.log(submit) 4 submit.addEventListener("click", (e) => { 5 const formData = new FormData(document.getElementById("form")); 6 const XHR = new XMLHttpRequest(); 7 XHR.open("POST", ` /lists/:${gon.list}/tasks${(gon.list) }` , true) 8 XHR.responseType = "json"; 9 XHR.send(formData); 10 XHR.onload = () => { 11 if (XHR.status != 200) { 12 alert('Error ${XHR.status}: ${XHR.statusText}'); 13 return null; 14 } 15 const item = XHR.response.post; 16 const list = document.getElementById("list"); 17 const formText = document.getElementById("content"); 18 const HTML = ` 19 <div class="task"> 20 21 <div class="task-content"> 22 <%= check_box_tag :done %> 23 <%= task.content %> 24 </div> 25 26 <div class="map"> 27 <iframe 28 width="500" 29 height="100" 30 frameborder="0" style="border:0" 31 src=<%=url_for("https://www.google.com/maps/embed/v1/place?key=#{ENV["GOOGLE_API_KEY"]}&q=#{task.content}&zoom=15")%>> 32 </iframe> 33 </div> 34 35 <div class delete-btn> 36 <%= link_to "削除", list_task_path(@list.id, task.id), method: :delete %> 37 </div> 38 39 </div>`; 40 list.insertAdjacentHTML("afterend", HTML); 41 formText.value = ""; 42 }; 43 e.preventDefault(); 44 }); 45} 46window.addEventListener("load", task);
HTML
1 <div id="list"> 2</div> 3 4 <div class="task"> 5 <div class="task-content"> 6 <%= check_box_tag :done %> 7 <!-- 投稿したメッセージ内容を記述する --> 8 <%= task.content %> 9 </div> 10 <div class="map"> 11 <iframe 12 width="500" 13 height="100" 14 frameborder="0" style="border:0" 15 src=<%=url_for("https://www.google.com/maps/embed/v1/place?key=#{ENV["GOOGLE_API_KEY"]}&q=#{task.content}&zoom=15")%>> 16 </iframe> 17 </div> 18 <div class= delete-btn> 19 <%= link_to image_tag("img_x.png"), list_task_path(@list.id, task.id), method: :delete %> 20 </div> 21 </div> 22
お手数おかけしますが、アドバイスいただけると幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー