Rails No template found for
解決したいこと
rails6.1のモデルのバリデーションチェックをしようとしています。
user.valid?をした際に以下のエラーが発生します。
アクションしたけど参照するテンプレート(xxxxx.html.erb)がないというのを以下の記事から見たのですが
https://ume1017.hateblo.jp/entry/2020/09/05/203959
Apiでjsonのやりとりだけしかしない場合
どう回避すればいいのでしょうか?
発生している問題・エラー
No template found for Api::V1::SampleController#createUser, rendering head :no_content
全体としてやりたいこと
ReactのFrontサーバーからAxiosでPost
↓
RailsのApiサーバーPostデータ受領
↓
バリデーションチェックを行う
↓
バリデーションチェックがOKなら登録
ソースコード
#User.rb
class User < ApplicationRecord
validates :name, presence: true
end
#SampleController.rb
class Api::V1::SampleController < ApplicationController
.
.
.
.
def createUser
# postされたデータの受領
json_request = JSON.parse(request.body.read)
logger.debug(json_request)
dat = params[:data]
#ユーザーIDの計算
maxId = 1;
nextId = 1;
userCnt = User.count
if userCnt > 0
maxId = User.maximum('user_id')
nextId = maxId + 1
end
#モデルにデータ保存
user = User.new
user.user_id = nextId
user.name = dat["name"]
if user.name.empty?
user.name = nil
end
user.age = dat["age"]
# モデルバリデーションチェック
logger.debug('バリデーションをします。1')
if user.valid?
logger.debug('バリデーションをします。2')
render json: { status: 999, message: user.errors.messages[:name]}
return
end
# 保存
begin
if user.save
logger.debug('保存します。')
render json: { status: 200, message: "登録に成功!!!"}
return
end
rescue => e
logger.debug('失敗しました。')
logger.debug(user.errors.messages[:name])
logger.debug(user.errors.messages[:age])
render json: { status: 999, message: e}
return
end
end
end
0