Ruby on rails Rails呈现:表单数据无效时对不同url的新更改
我的用户控制器中有以下代码Ruby on rails Rails呈现:表单数据无效时对不同url的新更改,ruby-on-rails,Ruby On Rails,我的用户控制器中有以下代码 class UsersController < ApplicationController def new @user = User.new end def create @user = User.new(user_params) @user.role = 'employee' if @user.save redirect_to jobs_path else render :new
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
@user.role = 'employee'
if @user.save
redirect_to jobs_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
end
class UsersController
我有以下路线
resources:users,only:[:new,:create]
现在当我访问
http://localhost:3000/users/new
并提交包含正确数据的表单,然后一切正常。但如果表单验证失败,则上面的url将更改为http://localhost:3000/users
。由于我的路线中没有/users
,如果我按上面url的enter键,我将得到404。有没有办法保持http://localhost:3000/users/new
当表单无效时,而不是将其更改为http://localhost:3000/users
?将render:new
更改为redirect\u to new\u user\u path
将解决此问题,但随后我将丢失表单对象的所有错误,并且无法向用户显示任何错误消息。对于您的问题,您可以使用下面的示例中的put参数重定向到new\u user\u path
如果rails无法保存@user,那么它将在@user.errors中保存错误
您可以查看下面的消息等内容,向用户显示
def create
@user = User.new(user_params)
@user.role = 'employee'
if @user.save
redirect_to jobs_path
else
redirect_to new_user_path(messages: @user.errors.messages)
end
end
在新表单中,您可以检查是否使用params[:messages]
为了更好地管理显示错误消息,您可以检查我将代码更改为@user.errors.messages,它将直接显示所有错误