yoshikazu0110
@yoshikazu0110 (h y)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌