前提・実現したいこと
Railsであるアクション内で定義したインスタンス変数を同じコントローラー内の別のアクションに渡したいと考えています。createアクションを先に実行してからresultアクションに渡したいと考えています。どのような方法があるでしょうか。ご教示いただければ幸いです。
def create @audio = params[:audio]#ブラウザ側で取得したデータをパラメーターから取得 require 'uri' #以下WebAPIにリクエストを投げる require 'net/http' require 'openssl' url = URI(Settings.speaker_identification.url) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = 'audio/x-pcm;bit=16;rate=16000;channels=1' request["Ocp-Apim-Subscription-Key"] = Settings.speaker_identification.subscription_key file = File.read(@audio) request.body = file response = http.request(request) @result = response.read_body #APIレスポンスをインスタンス変数に格納 end def result @result end
#static_pages/top.html document.getElementById("btn").addEventListener('click', () => { window.location.href = "/result"; console.log(gon.voices); console.log(gon.voices2); $.ajax({ url: '/static_pages', type: 'POST', contentType: false, processData: false, data: formData }) .done(function(response){ console.log(response); }) .fail(function(data){ console.log("送信に失敗しました"); }); })
試したこと
def create 省略 @result = response.read_body end def result create @result end
これだとresultページにアクセスした際にcreateアクションは実行されるのですが、ブラウザからのデータを渡せない為、@resultがnillとなってしまいます。
回答1件
あなたの回答
tips
プレビュー