Ruby on rails 3 设计仅使用自定义登录页的路由

Ruby on rails 3 设计仅使用自定义登录页的路由,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,我正在努力学习设计,似乎遇到了一个问题,这个问题和这里的许多问题几乎相同,但只是稍微有点不同,以至于我没有从这些问题的线索中获得多少牵引力 我有一个非常简单的应用程序。用户可以登录和注销(同时还启用了Desive“忘记密码”功能——我现在不关心它),就是这样。他们不能注册,除了更改密码之外,他们不能编辑他们的个人资料,除了登录和注销之外,他们不能做任何事情。(目前,将通过命令行手动处理帐户创建。) 我非常希望用户可以登录的唯一页面是“/”(root\u path)。我已经让它在你可以从“/”登录

我正在努力学习设计,似乎遇到了一个问题,这个问题和这里的许多问题几乎相同,但只是稍微有点不同,以至于我没有从这些问题的线索中获得多少牵引力

我有一个非常简单的应用程序。用户可以登录和注销(同时还启用了Desive“忘记密码”功能——我现在不关心它),就是这样。他们不能注册,除了更改密码之外,他们不能编辑他们的个人资料,除了登录和注销之外,他们不能做任何事情。(目前,将通过命令行手动处理帐户创建。)

我非常希望用户可以登录的唯一页面是“/”(
root\u path
)。我已经让它在你可以从“/”登录的地方工作了,这很好。我遇到的问题是,如果您在根路径登录页面中输入的用户/密码组合不正确,它会自动将您发送到设计登录页面以继续尝试登录登录失败时,如何使DEVICE重定向到根路径?

以下是我的路线-它们可能不是最优的或配置不正确,我希望有人给我指点如何修复它们:

root to: "core_pages#splash"

devise_for :users, skip: [:sessions]
as :user do
  # get 'signin' => 'devise/sessions#new', as: :new_user_session
  post 'signin' => 'devise/sessions#create', as: :user_session
  delete 'signout' => 'devise/sessions#destroy', as: :destroy_user_session,
    via: Devise.mappings[:user].sign_out_via
end

match '/home' => 'core_pages#home'
注意注释掉的“获取登录”行。系统在没有这一行的情况下工作,但(对我来说)令人惊讶的是,“GET/signin”会导致HTTP 400(OK)响应并呈现Desive登录模板。我更希望它返回某种“无效请求”,或者只是默默地将用户重定向到
根路径

在这些路由上运行
rake路由
,可以得到:

                root        /                              core_pages#splash
       user_password POST   /users/password(.:format)      devise/passwords#create
   new_user_password GET    /users/password/new(.:format)  devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                     PUT    /users/password(.:format)      devise/passwords#update
        user_session POST   /signin(.:format)              devise/sessions#create
destroy_user_session DELETE /signout(.:format)             devise/sessions#destroy
                home        /home(.:format)                core_pages#home

谢谢

您可以指向
根路径
设计会话控制器:“设计/会话#新建”(并将主视图移动到该页面)。此外,您还可以将此线路添加到您的路线中


获取“/”=>“设计/会话#新建”,:as=>:用户会话


这样,当登录失败时,您将返回主页(现在位于designe/sessions/new)

您可以指向
根路径
设计会话控制器:“设计/会话#新建”(并将主视图移动到该页面)。此外,您还可以将此线路添加到您的路线中


获取“/”=>“设计/会话#新建”,:as=>:用户会话


这样,当登录失败时,您将返回主页(现在位于designe/sessions/new)

还有像这样的东西:还没有工作?还有像这样的东西:还没有工作?谢谢-那么我如何修改设计登录页面呢?我当前的根路径只能作为登录页面使用,但有一些我想要保留的自定义内容,如徽标等。您可以在应用程序/视图上创建一个文件夹“设计/会话”,并将此自定义页面添加为new.html.erb。谢谢,这非常有效。如果您不介意的话,有什么文档表明这一点?有很多rails/Desive文档,但不清楚去哪里查找。谢谢-那么我如何修改Desive登录页面呢?我当前的根路径只能作为登录页面使用,但有一些我想要保留的自定义内容,如徽标等。您可以在应用程序/视图上创建一个文件夹“设计/会话”,并将此自定义页面添加为new.html.erb。谢谢,这非常有效。如果您不介意的话,有什么文档表明这一点?有很多rails/Desive文档,但不清楚该去哪里查找。