0

当您通过 create 操作在 rails 中创建用户时,url 更改为

http://myapplication.com/users with POST

在被重定向到其他地方之前。如果验证失败,则似乎保留了上述 URL。如果然后刷新,您最终会进入索引页面(因为它现在是 GET)。

我希望如果验证失败,网址将保持为

http://myapplication.com/users/new

由于我没有索引页面,这给我带来了问题。请问有没有办法解决这个问题?

4

2 回答 2

1

这取决于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则再次呈现该操作。

于 2012-10-30T23:04:53.190 回答
0

在您的 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
于 2012-10-31T06:50:14.023 回答