ajaxでPOST送信をし、railsのコントローラ側でデータベースに保存をしているのですが、
createをした後、詳細画面へリダイレクトすることができず困っています。
js var data = { 'score': score, 'time':time }; $.ajax({ type: 'POST', // リクエストのタイプ url: '/games', // リクエストを送信するURL data: data, // サーバーに送信するデータ dataType: 'json' // サーバーから返却される型 })
games.controller def create @game=Game.create( score:params[:score], time:params[:time] ) if @game.save redirect_to game_path(@game) end end
route.rb Rails.application.routes.draw do root to: 'home#index' resources :games, only: %i[new create show]
https://teratail.com/questions/373507
上記私が提示した方針で対応するんじゃなかったのですか?
結局同じ質問してしまってますよ。
先ほどはありがとうございました。
この方法で上手くいかない理由が分からなかったので再質問させてもらいました。
元の質問でコメントで書いてますよ。
つまるところ「Ajaxはバックグラウンドで実行されるものでそもそも画面という概念がない」から。
ajaxの返却値をビューにして返して、別の画面に遷移した際,
データベースに保存した値は使えないということでしょうか?
そういう話ではなく「画面遷移ができない」という意味です。画面という概念がないので当然画面遷移もないです。
それはわかっています!
ajaxでコントローラを経由してDBに値を保存し、
location hrefで別ページに飛んだあと、保存した値を取り出す方法が分からず困っています。
分かってないからこういうコードを書いて「なぜできないか分からない」と言っているのでは。
「location hrefで別ページに飛んだあと、保存した値を取り出す方法」
をやってるコードではないです。どこにもlocation.hrefないですし、Ruby側にredirect_to と書いています。
それに「DBに保存した」のであればlocation.hrefやリダイレクト全く関係なく、単ページの話です。
あなたの回答
tips
プレビュー