前提・実現したいこと
筋トレアプリ作成中で以下のようにしたいです
部位ごとに選択したらDBからちがう種目がでるようにしたいです
胸ーベンチ、フライ
背中ーデット、懸垂
脚ースクワット、プレス
該当のソースコード
js
1function check() { 2 let select = document.querySelector("#part"); 3 4 select.addEventListener('change',() => { 5 const valueName = document.getElementById('part').value; 6 const XHR = new XMLHttpRequest(); 7 XHR.open("GET",`/muscle_events/${valueName}`,true); 8 XHR.responseType = "json"; 9 XHR.send(); 10 XHR.onload = () => { 11 const events = XHR.response.events 12 debugger 13 const eventSelect = document.getElementById('event') 14 const value = document.createElement('value') 15 value = events 16 select.appendChild('value') 17 18 } 19 }) 20} 21 window.addEventListener("turbolinks:load", check); 22
MuscleEventsController
1class MuscleEventsController < ApplicationController 2 def index 3 @muscle_events = MuscleEvent.all 4 end 5 6 def get_menu 7 events = MuscleEvent.where(part:params[:id]) 8 render json:{ events: events} 9 end 10end 11
views
1<script src="select.js"></script> 2<p>どこの部位を筋トレしますか?</p> 3<%= form_with url:"root_path" do |f| %> 4 <%= f.select :part, MuscleEvent.parts.keys.map{|k| [I18n.t("enums.muscleevent.parts.#{k}"), k]} %> 5 <%= f.select :event,{} %> 6<% end %>
試したこと
def get_menu events = MuscleEvent.where(part:params[:id]) render json:{ events: events}
ここまでは以下のように取得できているのでjsでのセレクトボックスにeventをいれらてない
pry(#<MuscleEventsController>)> MuscleEvent.where(part:params[:id]) MuscleEvent Load (0.6ms) SELECT `muscle_events`.* FROM `muscle_events` WHERE `muscle_events`.`part` = 2 ↳ app/controllers/muscle_events_controller.rb:8:in `get_menu' => [#<MuscleEvent:0x00007f8c7547ed08 id: 4, part: nil, event: "デットリフト", created_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00, updated_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00>, #<MuscleEvent:0x00007f8c754b4728 id: 5, part: nil, event: "懸垂", created_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00, updated_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00>, #<MuscleEvent:0x00007f8c754b4660 id: 6, part: nil, event: "ラットプルダウン", created_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00, updated_at: Sun, 21 Mar 2021 19:27:21 UTC +00:00>]
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 03:12 編集