创建失败后避免使用索引URL

时间:2012-10-30 22:22:30

标签: ruby-on-rails-3 rails-routing

当您通过创建操作在rails中创建用户时,该网址将更改为

http://myapplication.com/users with POST

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

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

http://myapplication.com/users/new

由于我没有索引页面,这导致了我的问题。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

这取决于控制器中respond_to块中的逻辑。

这是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操作。

答案 1 :(得分: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