0

create アクションを使用して Rails でユーザーを作成すると、URL が次のように変更されます。

http://myapplication.com/users with POST

他の場所にリダイレクトされる前に。検証に失敗した場合、上記の URL が保持されているように見えます。次に更新すると、インデックス ページが表示されます (現在は GET であるため)。

検証が失敗した場合、URLはそのままになると思います

http://myapplication.com/users/new

私はインデックスページを持っていないので、これが問題を引き起こしています。これを解決する方法はありますか?

4

2 に答える 2

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アクションが再度レンダリングされます。

于 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 に答える