簡體   English   中英

Rails/React App Signup 拋出 500 內部服務器錯誤

[英]Rails/React App Signup throwing 500 internal server error

我正在嘗試通過 React 前端的注冊表單將用戶數據保存到我的 Rails DB 以獲取用戶信息。 我的路線和 controller 寫得正確(至少我認為)和下面的 fetch 請求,但我在提交時不斷收到 500 內部錯誤。 請讓我知道我缺少什么,任何幫助將不勝感激!

我的路線:

資源:用戶,僅:[:show, :create]

我在 UsersController 中的創建操作:

  def create
    user = User.create!(user_params)
      if user.valid?
        session[:user_id] = user.id # remembering who our user is 
        render json: user, status: :ok
      else
        render json: {error: user.errors.messages}
      end
  end

最后是來自 React 前端的 Signup.js 組件的獲取請求,我在“獲取”的行上收到錯誤

fetch(`/users`,{
      method:'POST',
      headers:{'Content-Type': 'application/json'},
      body:JSON.stringify(user)
    })
    .then(res => {
        if(res.ok){
            res.json().then(user => {
                history.push(`/users/${user.id}`)
            })

這可能只是您問題的一部分,但首先創建,然后要求有效性是倒退的。

改為執行以下操作:

def create
  user = User.new(user_params)
    if user.save # <-- will return false if the save fails
      user.reload
      session[:user_id] = user.id # remembering who our user is 
      render json: user, status: :ok
    else
      render json: {error: user.errors.messages}
    end
end

如果您真的想明確檢查有效性:

def create
  user = User.new(user_params)
    if user.valid? # <-- will check validity
      user.save
      user.reload
      session[:user_id] = user.id # remembering who our user is 
      render json: user, status: :ok
    else
      render json: {error: user.errors.messages}
    end
end

我的猜測是您的錯誤可能來自您的user變量實際上還沒有 ID 的事實。 您需要保存記錄,然后刷新它以獲取 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM