注册后设计重定向 [英] Devise redirect after sign up

查看:54
本文介绍了注册后设计重定向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Devise 给我带来了相当大的困难.目前,除了注册重定向之外,其他一切似乎都在工作.我想设计在索引操作时重定向到我的城镇控制器,在注册或登录时(登录实际上有效).

Devise is giving me a pretty hard time. For now, everything else seems to be working, except the sign up redirect. I want devise to redirect to my town controller at index action, upon sign up or login (login actually works).

我尝试覆盖 RegistrationsController 并尝试添加一个 ApplicationsController 函数,例如:

I've tried overriding RegistrationsController and i've tried adding an applicationsController function like :

  def after_sign_in_path_for(resource_or_scope)
    if resource_or_scope.is_a?(User)
      town_path
    else
      super
    end
  end

仍然,我遇到了同样的错误:

Still, i'm getting the same error :

NoMethodError in User/townController#index

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.*

说真的,我找不到办法做到这一点.请问有什么想法吗?:)

Seriously, i cannot find a way to do it. Any ideas please ? :)

我的路线

      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 GET    /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"}
     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"}
                  root        /(.:format)                                    {:action=>"index", :controller=>"home"}
             user_root        /user(.:format)                                {:action=>"index", :controller=>"user/town"}
                  home        /home(.:format)                                {:action=>"index", :controller=>"home"}
                  town        /town(.:format)                                {:action=>"index", :controller=>"town"}
                 inbox        /messages(.:format)                            {:action=>"index", :controller=>"messages"}
                 inbox        /messages/inbox(.:format)                      {:action=>"inbox", :controller=>"messages"}

Routes.rb :

Routes.rb :

  devise_for :users

  root :to => "home#index"

  namespace :user do
    root :to => "town#index"
  end  

  scope :path => '/home', :controller => :home do
    match '/' => :index, :as => 'home'
  end

  scope :path => '/town', :controller => :town do
    match '/' => :index, :as => 'town'
  end
......

推荐答案

这就是我的工作原理.

# In your routes.rb
match 'dashboard' => 'user_dashboard#index', :as => 'user_root'

然后确保您的 home#index 控制器上没有设置 before_filter :authenticate_user!.

Then make sure you don't have a before_filter :authenticate_user! set on your home#index controller.

这篇关于注册后设计重定向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆