设计after_sign_in_path_for ...发送到... root_path - 查询

Sal*_*med 14 routes ruby-on-rails devise ruby-on-rails-3

我需要帮助解决路由问题,使用devise authentication gem在成功登录后重定向到自定义页面,以便通过输入测试人员姓名和年龄来创建新记录(测试数据)

我正在使用Rails 3和设计版本1.4.9

我的路线如下

    new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
        user_session POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
       user_password POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
   new_user_password GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
  edit_user_password GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                     PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
   cancel_user_registration GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
   user_registration POST   /users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
   edit_user_registration GET    /users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                     PUT    /users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                     DELETE /users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}
             testers GET    /testers(.:format)             {:action=>"index", :controller=>"testers"}
                     POST   /testers(.:format)             {:action=>"create", :controller=>"testers"}
          new_tester GET    /testers/new(.:format)         {:action=>"new", :controller=>"testers"}
         edit_tester GET    /testers/:id/edit(.:format)    {:action=>"edit", :controller=>"testers"}
              tester GET    /testers/:id(.:format)         {:action=>"show", :controller=>"testers"}
                     PUT    /testers/:id(.:format)         {:action=>"update", :controller=>"testers"}
                     DELETE /testers/:id(.:format)         {:action=>"destroy", :controller=>"testers"}
                root        /                              {:controller=>"testers", :action=>"index"}
Run Code Online (Sandbox Code Playgroud)

在应用程序控制器中我试图覆盖下面的方法,但无济于事我仍然被路由回测试器索引

class ApplicationController < ActionController::Base

  protect_from_forgery

  def after_sign_in_path_for(resource) 

      new_tester_path

  end

end
Run Code Online (Sandbox Code Playgroud)

在我的routes.rb文件中,我有以下行

Testing::Application.routes.draw do

  devise_for :users 

  resources :testers

  root :to => 'testers#index'
Run Code Online (Sandbox Code Playgroud)

虽然大部分代码都是使用脚手架完成的,在用户电子邮件和密码成功登录后,我仍然无法确定如何重定向到new_tester_path或route / testers/new.

有人可以让我知道我错过了什么.....在编写覆盖功能时,我想知道我需要指定的确切路线.

虽然测试我尝试了这样的愚蠢,但谷歌页面也没有打开...... :(

class ApplicationController < ActionController::Base 

protect_from_forgery 

helper ApplicationHelper

def after_sign_in_path_for(resource) 

"www.google.com" 

end 

def after_sign_up_path_for(resource) 

"www.google.com" 

end 

def after_update_path_for(resource) 

"www.google.com" 

end 
Run Code Online (Sandbox Code Playgroud)

小智 22

只需使用此代码段:

class ApplicationController < ActionController::Base
    def after_sign_in_path_for(user)
        user_url(user)
    end
end
Run Code Online (Sandbox Code Playgroud)


cth*_*lhu 5

尝试在会话中设置user_return_to路径:

session['user_return_to'] = new_tester_path
Run Code Online (Sandbox Code Playgroud)

您可以在从Devise :: SessionsController派生的控制器中执行此操作