当您通过 create 操作在 rails 中创建用户时,url 更改为
http://myapplication.com/users with POST
在被重定向到其他地方之前。如果验证失败,则似乎保留了上述 URL。如果然后刷新,您最终会进入索引页面(因为它现在是 GET)。
我希望如果验证失败,网址将保持为
http://myapplication.com/users/new
由于我没有索引页面,这给我带来了问题。请问有没有办法解决这个问题?
当您通过 create 操作在 rails 中创建用户时,url 更改为
http://myapplication.com/users with POST
在被重定向到其他地方之前。如果验证失败,则似乎保留了上述 URL。如果然后刷新,您最终会进入索引页面(因为它现在是 GET)。
我希望如果验证失败,网址将保持为
http://myapplication.com/users/new
由于我没有索引页面,这给我带来了问题。请问有没有办法解决这个问题?
这取决于respond_to
控制器中块中的逻辑。
这是一个典型的create动作示例users_controller.rb
:
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
因此,如果保存失败,new
则再次呈现该操作。
在您的 UsersController 中,执行以下操作:
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
redirect_to root_url # save success will return to root page
else
render 'new'
end
end