Ruby on rails rails设计-多寄存器url

Ruby on rails rails设计-多寄存器url,ruby-on-rails,ruby,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,起初,我为一种类型的用户使用designregister。 很好地工作,但现在我添加了两个细节:为lambda用户添加register/users,为professional添加register/pro 这两个路由使用相同的模型用户,只需更改表单视图 但是,当我提交表单时,如果失败,我将重定向到/users/而不附加任何其他内容 为此,我做了以下工作: get '/register', to: 'devise/registrations#new', as: :register # origina

起初,我为一种类型的用户使用designregister。 很好地工作,但现在我添加了两个细节:为lambda用户添加register/users,为professional添加register/pro

这两个路由使用相同的模型用户,只需更改表单视图

但是,当我提交表单时,如果失败,我将重定向到/users/而不附加任何其他内容

为此,我做了以下工作:

get '/register', to: 'devise/registrations#new', as: :register # original version
# and added :
get '/register/users', to: 'devise/registrations#new', as: :register_users
get '/register/professional', to: 'devise/registrations#new', as: :register_pro
但是,正如我所说,如果表单填写不正确,除了重定向到/users/之外,没有任何附加内容

因此,我还尝试添加以下内容:

post '/register/users' => 'devise/registrations#create', :as => :register
post '/register/professional' =>   'devise/registrations#create', :as => :register
但同样的结果

我做错了什么事,有人认为是这样吗

谢谢

编辑:

目前的问题是,如果公式填写不当,则会重定向到./users,而不是注册/users。但如果成功了,它会起作用的

在控制器中注册路径后通常需要覆盖应用程序控制器

def after_sign_up_path_for(resource)
  if resource.type == :pro # please modify this line
    some_your_path
  else
    super # this will be /users/
  end
end
我假设你有用户模型。那么这个资源就是用户对象。我假设您在用户模型中有一些属性来查找pro/non-pro。请将该属性用于“if”语句和写入路径


如果您使用Confirmable,则需要在“非活动”后覆盖“注册”后覆盖“路径”,而不是在“注册”后覆盖“路径”。

嗯,我尝试过,但没有任何更改,甚至没有使用该方法。我认为这行不通。我认为post方法不是调用。。。我的模型是相同的,除了属性设置为true/false外,pro和non-pro之间没有区别。但是我想使用两个不同的url。这两个根使用相同的html文件,设计用于注册/新建的html,如果url包含用户或专业人员,则显示不同的表单。但是当我确认表单时,除了重定向到/users/之外,没有任何附加内容,甚至连/register/users/都没有。我认为这是一个路线问题。我已经编辑了我的问题