Railsでjqueryを使ってajaxで更新したい。
初心者です。Railsでcreateし、updateはajaxでしたいのですが、上手にpostされません。
[routes.rb]
resources :temps, only: [:top, :index, :new, :create, :edit, :update]
[temp.js]
$(document).ready(function(){ $('div.index_menu_imgs').draggable(); $('div#img_00.place').droppable({ accept : 'div.index_menu_imgs:hover', drop : function(event, ui){ var place = $('div.place#img_00').attr('id'); var img_ad = ui.draggable.prop("outerHTML").replace(/"/g, "'"); var img_ad2 = $(img_ad).css("background-image"); var img_ad3 = img_ad2.replace('url(', '').replace(')', '').replace(/\"/gi, ""); alert ("ドロップ!"); $.ajax({ url:'edit', type: 'POST', data: { 'img_ad' :$('img_ad3').val(), 'place':$('place').val() }, dataType: "html" }) //成功時 .done( (data) => { console.log("成功!"); }) //失敗時 .fail((data) =>{ console.log("失敗!"); }); } }); });
[temps_controller.rb]
def edit @img = Img.find(params[:id], params[:img_ad], params[:place]) @imgs = Img.all end def update @img = Img.find(params[:id]) img.update(img_update_params) end private def img_update_params params.require(:img_ad).permit(:place).merge(user_id: current_user.id) end
ビューにはドラックアンドドロップでDBの画像を繰り返しで表示していて、指定した箇所にドロップした時点でjqueryのajaxでpostする仕組みにしたいのです。
送信する内容は、jqueryにもある通り、urlとplaceという2つの値です。
色々なサイトを参考に見様見真似で組み立ててみたのですが、
Routing Error No route matches [POST] "/temps/1/edit"
と表示されてしまいます。
トライした事:
(1)jqueryの関数を独立させてtrial.js.erbを作り、ソコにedit部分を入れて、updateとpost機能を完全に別にしてみた(違うエラーになるかなと思ったのですが、同じエラー)
(2)routes.rbを色々変更
post 'temps/:id' => 'temps#trial'
patch 'temps/:id' => 'temps#trial'
(trial.js.erbを作ってた時のルーティング。でもエラーは同じ)
(3)temps.jsのポスト先URLを色々変更
url:'/:id/edit',
url:'temps/:id/edit',
(でもエラーは同じ内容)
(4)temps.jsのデータタイプを入れたり消したり。
何も変化ナッシング。
何かとっても根本的なところで致命的な何かをしでかしているのか?全く分かっていないのか。。。
何かヒントを頂けると嬉しいです。
回答1件
あなたの回答
tips
プレビュー