使用验证

时间:2018-03-08 01:39:14

标签: ruby-on-rails devise

我有一个简单的Devise注册表单和validatable插件。它主要按预期工作,如果用户忘记输入名字,则会使用红色验证消息将其重定向回来。

问题是它重定向到用户去的成功登录的相同路径(即它将它们重定向到/user而不是回到/user/sign_up)。如果用户因任何原因刷新页面,则会出现No route matches [GET] "/user"错误。

如何在注册失败时强制重定向返回原始/user/sign_up路由?我知道我可以破解注册控制器中的create操作,但是当我重定向到正确的路由时,我会丢失设计验证消息。

更新

似乎问题是Devise处理respond_with Rails 4 How Overwrite Devise Respond Path Upon Error的方式。看起来Devise尝试在/ user处呈现create模板,但我仍然无法覆盖它。

1 个答案:

答案 0 :(得分:8)

首先,您可以使用以下命令创建设计控制器 -

rails generate devise:controllers users

然后你必须修改你的路线设计

# config/routes.rb
Rails.application.routes.draw do

  devise_for :users,
         :skip => [:registrations]

  devise_scope :user do
    get "user/sign_up", to: "users/registrations#new", as: :new_user_registration
    post "user/sign_up", to: "users/registrations#create", as: :user_registration
  end

end

希望它有效。