React+Ruby on Rails项目出现Internal server error 500的原因排查
解决Rails控制器语法错误(500内部服务器错误)
你的500错误是语法错误导致的,问题出在UsersController代码里:在create方法的结束end之后,多写了一个多余的end,破坏了代码的结构层级,Ruby解析时无法匹配正确的代码块,因此抛出错误。
修正后的代码如下:
class UsersController < ApplicationController rescue_from ActiveRecord::RecordInvalid, with: :render_unprocessable_entity_response skip_before_action :authorize, only: [:create] def create user = User.create!(user_params) session[:user_id] = user.id render json: user, status: :created end def show render json: @current_user end def index user = User.all render json: user end private def user_params params.permit(:name, :email, :password) end def render_unprocessable_entity_response(invalid) render json: { errors: invalid.record.errors.full_messages }, status: :unprocessable_entity end end
额外说明:你已经使用create!方法(验证失败时会抛出ActiveRecord::RecordInvalid异常),并且通过rescue_from统一处理了异常,所以原代码里的if user判断完全多余——create!执行成功才会走到后续代码,失败直接触发异常处理逻辑,因此可以直接移除那部分判断,让代码更简洁。
内容的提问来源于stack exchange,提问作者codertraveller
相关产品推荐
相关产品推荐

