所以我设置了我的路线:
StartPoint::Application.routes.draw do
get 'login' => 'sessions#new', :as => 'login'
get 'logout' => 'sessions#destroy', :as => 'logout'
get 'signup' => 'users#new', :as => 'signup'
resource :home, controller: 'home'
resources :users
resources :sessions
root 'home#show'
end
我什么时候注册并且无法填写正确的数据我总是需要bla.com/users
而不是注册。它应该总是回去注册。我的控制器看起来像这样,对于new和create
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_signup_params)
if @user.save
redirect_to root_path
else
render :new
end
end
end
有人告诉我,当它失败时,命令查看我需要回到新方法的所有错误消息,然后显示我的所有错误。然而,新方法有一个完全不同的url结构然后创建。无论如何,如果有错误 - 我需要它回到bla.com/signup
,而不是bla.com/users
答案 0 :(得分:0)
你不应该有帖子
post 'login' => 'sessions#create', :as => 'login'
get 'login' => 'sessions#new', :as => 'login'
get 'logout' => 'sessions#destroy', :as => 'logout'
get 'signup' => 'users#new', :as => 'signup'
答案 1 :(得分:-1)
表单的操作是/users
。因此,在POST到/users
后,您需要重定向到其他网址(/signup
),或者只对/users
端点感到满意。注意:如果您redirect_to signup_path
,您将丢失所发布的数据。
您最好的选择可能是不为您的注册使用资源。
match 'signup' => 'users#signup'
然后在你的控制器中,处理POST和GET:
def signup
if request.post?
@user = User.new(user_signup_params)
if @user.save
redirect_to root_path
end
end
render :new
end
request object的文档。