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

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

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

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

Q&A

解決済

1回答

424閲覧

どうしてもCompleted 422 Unprocessable Entityが解消されない

yusukechief

総合スコア16

Ruby on Rails 5

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

0グッド

0クリップ

投稿2018/02/25 10:39

iOS(swift)アプリ上でログイン機能を実装したいです。データはrailsアプリ(サーバー)にあります。このrailsアプリはapiモードではなく、普通のモード(viewが含まれる)で使っています。

iOS側からAlamofireを使って、rails側にhttpリクエスを送っているのですが、rails側でエラーが発生します。rails側でデータを受け取っているのは確認しています。どなたか知恵を貸していただけませんでしょうか?どうしても解決できませn。

コードは以下です。

swift

1#loginBUttonActionを押すとrails側にhttpリクエスト(post)します 2@IBAction func loginButtonAction(_ sender: Any) { 3 let params: [String: String] = [ 4 "email": "hogehoge.test@fake.com", 5 "password": "aaaaaa" 6 ] 7 Alamofire.request("https://hogehoge.herokuapp.com/api/v1/sessions/login", method: .post, parameters: params).responseJSON(completionHandler: { response in 8 print(response.value) 9 }) 10 }

rails

1class Api::V1::SessionsController < ApplicationController 2 # 色々試した 3 # protect_from_forgery prepend: true, with: :null_session 4 # protect_from_forgery with: :null_session 5 # skip_before_action :verify_authenticity_token 6 # protect_from_forgery prepend: true, with: :exception 7 protect_from_forgery except: :login 8 9 def login 10 user = User.find_by(email: params[:email]) 11 if user && user.valid_password?(params[:password]) 12 order = user.orders.where(state:"is_rented").try!(:first) 13 if order.present? 14 stock_info = order.rentals.map do |_rental| 15 _stock = _rental.stock 16 {uuid: _stock.uuid, major: _stock.major, minor: _stock.minor} 17 end 18 render json: {access_token: user.access_token, start_date: order.start_date, end_date: order.end_date, stock_info: stock_info}, status: 200 19 else 20 render json: {access_token: user.access_token, start_date: nil, end_date: nil, stock_info: nil}, status: 200 21 end 22 else 23 render json: {error:"Emailかパスワードが間違っています"}, status: 422 24 end 25 end 26 27end 28

エラー内容は以下です。これはrailsアプリがデプロイされたherokuのログです

heroku

1INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Started POST "/api/v1/sessions/login" for 126.74.149.104 at 2018-02-25 10:26:16 +0000 2INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Processing by Api::V1::SessionsController#login as */* 3INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Parameters: {"email"=>"hogehoge.test@fake.com", "password"=>"[FILTERED]", "default"=>{"format"=>:json}} 4DEBUG -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] User Load (4.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "hogehoge.test@fake.com"], ["LIMIT", 1]] 5DEBUG -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] params:{"email"=>"hogehoge.test@fake.com", "password"=>"aaaaaa", "default"=>{"format"=>:json}, "controller"=>"api/v1/sessions", "action"=>"login"} 62018-02-25T10:26:16.719039+00:00 app[web.1]: 7INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Completed 422 Unprocessable Entity in 93ms (Views: 9.0ms | ActiveRecord: 25.6ms) 82018-02-25T10:26:16.730962+00:00 heroku[router]: at=info method=POST path="/api/v1/sessions/login" host=stark-earth-51396.herokuapp.com request_id=36f35f26-caa7-40b5-8d2b-c0c69e47321a fwd="126.74.149.104" dyno=web.1 connect=1ms service=131ms status=422 bytes=394 protocol=https

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

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

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

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

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

guest

回答1

0

自己解決

トンチンカンな質問でした。クローズします。

投稿2018/02/26 10:18

yusukechief

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問