質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

1086閲覧

railsでAjaxから複数のDataを受け取り、DBに登録したい

rakiamusic

総合スコア19

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2018/10/23 09:54

編集2018/10/23 10:11

前提・実現したいこと

レイルズで注文登録システムを作っています。
Ajaxを使用してコントローラ側に複数のData(商品idとユーザid)、
を渡してDBに登録したいのですが、コントローラ側でうまく値を取り出せない状況です。
いろいろ模索しましたがわからず、どなたかご教授いただけないでしょうか?

ruby on rails 5.2.1

発生している問題・エラーメッセージ

メッセージ Started GET "/user/item_additional?**[object%20Object]**" for 127.0.0.1 at 2018-10-23 18:12:01 +0900 Processing by UserController#item_additional as JSON Parameters: {"object Object"=>nil} (0.2ms) BEGIN ↳ app/controllers/user_controller.rb:53 Item Create (0.3ms) INSERT INTO `items` (`created_at`, `updated_at`) VALUES ('2018-10-23 09:12:01', '2018-10-23 09:12:01')

Parameters: {"object Object"=>nil}とのメッセージ。

product_idとuser_idがないまま登録されている状況です。

該当のソースコード

<Ajax側記載> var data = { 'product_id' : product_id, 'user_id' : user_id }; $.ajax({ url: '/user/item_additional', type: 'GET', data: data, rocessData: false, contentType: false, dataType: 'json' })

<コントローラ側記載>
user_controller.rb

@item = Item.new( product_id: params[:product_id], user_id: params[:user_id] ) @item.save

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Hi again, I found something related. If you like, you can check it.
http://api.jquery.com/jquery.ajax/
Please check the explanation of "processData" option, which I post it below:

HTML

1processData (default: true) 2Type: Boolean 3By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.

And I don't think you need this option to make it work.
Just use this code block below, it is enough to make a JSON request:

HTML

1 <script type="text/javascript"> 2 var data = { 'product_id' : 10, 'user_id' : 12 }; 3 $.ajax({ 4 url: '/test', 5 type: 'GET', 6 data: data, 7 dataType: 'json' 8 }) 9 </script>

The server is processing as JSON

HTML

1Processing by PagesController#test as JSON 2 Parameters: {"product_id"=>"10", "user_id"=>"12"}

Hi, I tried your code and it works for me.
I can access params[:product_id] and params[:user_id] in the action.

I am using jQuery 1.11.1 + Rails 5.2.1
Can you provide more info?

html

1 <script type="text/javascript"> 2 var data = { 'product_id' : 10, 'user_id' : 12 }; 3 $.ajax({ 4 url: '/test', 5 type: 'GET', 6 data: data, 7 rocessData: false, 8 contentType: false, 9 dataType: 'json' 10 }) 11 </script>

html

1Started GET "/test?product_id=10&user_id=12" for 127.0.0.1 at 2018-10-23 18:22:54 +0800 2Processing by PagesController#test as JSON 3 Parameters: {"product_id"=>"10", "user_id"=>"12"}

投稿2018/10/23 10:28

編集2018/10/24 03:13
Hungmi

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rakiamusic

2018/10/23 13:36

thank you comment me too jQuery 1.11.1 Rails 5.2.1 -----------application.js--------------- //= require jquery_ujs //= require rails-ujs //= require bootstrap-sprockets //= require activestorage //= require jquery.turbolinks //= require turbolinks //= require_tree .
Hungmi

2018/10/23 15:56

Can you make sure you have correctly put product_id and user_id in the ajax code? Maybe they are NULL there?
rakiamusic

2018/10/24 01:43

I tryed var data = { 'product_id' : 3, 'user_id' : 1 }; →Started GET "/user/item_additional?[object%20Object]" for 127.0.0.1 at 2018-10-24 10:36:32 +0900 Processing by UserController#item_additional as JSON Parameters: {"object Object"=>nil} Thanks your help I consider the other way..
rakiamusic

2018/10/24 03:38

$.ajax({ url: '/test', type: 'GET', data: data, dataType: 'json' }) ↑↑ It went well! Started GET "/user/item_additional?product_id=3&user_id=1" for 127.0.0.1 at 2018-10-24 12:22:37 +0900 Processing by UserController#item_additional as JSON Parameters: {"product_id"=>"3", "user_id"=>"1"} ーーーーーーーーーーーーー Thank you for your great help. ARIGATO !
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問