Ruby on Rails5 で、セレクトボタンを変更した際に変更した値をDBに反映するプログラムを作りたいと思っています。
ajaxやjsonを利用して反映させるプログラムはJavaで作ったことがあったので、同じように作ろうと思ったのですが、Railsの知識不足からコントローラーにどう記述したらよいのか分かりません。
正直まだRailsを始めたばかりの超初心者で、自動的に生成されてしまう記述の意味などが全然理解できていないところがあります。
知恵を貸していただけたら幸いです。よろしくお願いいたします。
・sampleTableにあるnumberSelectカラムを変更したいプログラム
<view> セレクトボタンを作成して、JS用にクラス指定した
erb
1<%# 使う所だけ抜き出し %> 2<%= form_with(model: sampleTable, local: true) do |form| %> 3 <%= form.select :numberSelect,[[10,10],[9,9],[8,8],[7,7],[6,6],[5,5],[4,4],[3,3],[2,2],[1,1]],{}, :class => 'numberSelect' %> 4 <% end %>
<JS> JSONデータでコントローラーにデータを飛ばす
jquery
1 // セレクトボタンチェンジイベント 2 $(".numberSelect").change(function () { 3 // ajax通信 4 $.ajax({ 5 type: "POST", 6 url: '/change', //URL・コントローラーへの接続自体は確認済 7 data: { "numberSelect": $(this).val() }, //thisvalの取得は確認済 8 dataType: 'json' 9 //成功時 10 }).done(function (data) { 11 alert("成功"); 12 }) 13 // 失敗時 14 .fail(function () { 15 alert("失敗"); 16 }); 17});
<routs.rb>
ruby
1 post 'change', to: 'sampleTable#change' #確認済
<controller> 受け取ったJSONファイルでDBを更新
ruby
1 def change #メソッドへの到達は確認済 2 #ここの書き方が間違っていそうだけど、どう書いたらいいか分からない 3 if @sampleTable.update(numberSelect: data["numberSelect"]) 4 render json: @sampleTable; #これはif文に挟まなければ帰ってくるのを確認 5 end 6 end 7end
現状の実行結果:「失敗」という文字のアラート
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 03:11
2019/09/24 03:16
2019/09/24 03:48
2019/09/24 04:01
2019/09/24 04:07
2019/09/25 01:35