いつもお世話になっております。
環境
CentOS7
virtualbox vagrant
rails5.2.4.1
ruby2.5.1
【やりたいこと】
表題通り、edit画面をmodalフォームにして、submitを押すとupdateアクションが呼ばれるという機能を作りたいです。
具体的に説明すると、、
上の画像のつぼをクリックすると、
(これはデザインを考えるときに作成したphotoshopのスクリーンショットです。
そのため、現状ではこのツボをクリックしてもこのmodal-formは出てきません。)
このようなmodal-formを表示し、アップデートのボタンを押せば、ツボの色が変わるという使用にしたいです。(例えば、サラダ油のツボが黄色だと思いますが、これをクリックしてmodal-formを表示させ青を選択しアップデートする、みたいな感じです)
【試したこと】
https://qiita.com/niwaken/items/ffbce52fb024fd369f24
こちらの記事を参考にbootstrap4を使用して、modalを表示させることはできましたが、自分のやりたいデザインを実現することが難しかったため、javascript jQueryのみでやろうと考えています。
【わからないこと】
index.hrml.erb(1枚目の画像のページ)とedit.js.erbと_form.html.erbを作成し、以下のように記述。
edit.js.erb
ruby
1$("#flavor-modal").html("<%= escape_javascript(render 'layouts/form') %>") 2$("#flavor-modal").modal("toggle")
index.html.erb
ruby
1<% @flavors.each do |flavor| %> 2 <div class="flavor"> 3 <%= link_to image_tag(@StatusImage[flavor.status]), edit_flavor_path(flavor), remote: true, class: "StatusImage" %> 4 <p><%= flavor.name %></p> 5 </div> 6<% end %> 7<div id="flavor-modal"></div>
_form.html.erb https://syncer.jp/jquery-modal-window
ruby
1# 上のリンクを参考にしました。 2<div id="modal-content"> 3 <%= form_with(model: @flavor, local: true) do |form| %> 4 <%= form.radio_button :status, 1 %> 5 <%= form.radio_button :status, 2 %> 6 <%= form.radio_button :status, 3 %> 7 <%= form.submit "アップデート" %> 8 <% end %> 9<div id="modal-overlay"></div>
application.html.erb
css
1/* start modal test */ 2#modal-content{ 3 width:50%; 4 margin:1.5em auto 0; 5 padding:10px 20px; 6 border:2px solid #aaa; 7 background:#fff; 8 z-index:2; 9} 10 11.modal-p{ 12 margin-top:1em; 13} 14 15.modal-p:first-child{ 16 margin-top:0; 17} 18 19.button-link{ 20 color:#00f; 21 text-decoration:underline; 22} 23 24.button-link:hover{ 25 cursor:pointer; 26 color:#f00; 27} 28#modal-overlay{ 29 z-index:1; 30 display:none; 31 position:fixed; 32 top:0; 33 left:0; 34 width:100%; 35 height:120%; 36 background-color:rgba(0,0,0,0.75); 37} 38/* end modal test */
flavors_controller.rb
ruby
1 def edit 2 @flavor = Flavor.find(params[:id]) 3 end 4 def update 5 @flavor = Flavor.find(params[:id]) 6 @flavor.update(flavor_params) 7 if @flavor.status == 1 8 @flavors_1 = Flavor.where(status: 1) 9 @users = User.all 10 user_ids = @users.map(&:id) 11 flavor_ids = @flavors_1.map(&:id) 12 SeasoningMailer.send_status_1(user_ids, flavor_ids).deliver_later 13 end 14 @flavors = Flavor.all.order(id: "ASC").page(params[:page]).per(10) 15 redirect_to flavors_path 16 end
現状はツボをクリックしても反応しないです。。。
もしわかる方がいればご教示いただければ幸いです。
よろしくお願い致します。