加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 操作方法:设计after_sign_up_redirect?

发布时间:2020-12-17 03:52:50 所属栏目:百科 来源:网络整理
导读:我试着按照这里的说明( GitHub Devise Wiki),但它不适合我. 我想在用户注册后让Devise重定向到/ welcome.我创建了一个注册控制器,但它永远不会进入视图.我在这做错了什么? Ruby 1.9.2 Rails 3.1.0.rc4 设计1.4.2 谢谢 更新: 由于某种原因,未触发after_sign
我试着按照这里的说明( GitHub Devise Wiki),但它不适合我.

我想在用户注册后让Devise重定向到/ welcome.我创建了一个注册控制器,但它永远不会进入视图.我在这做错了什么?

Ruby 1.9.2
Rails 3.1.0.rc4
设计1.4.2

谢谢

更新:

由于某种原因,未触发after_sign_up_path_for但触发了after_sign_in_path_for.我仍然想让after_sign_up_path_for工作

_app /控制器/ registrations_controller.rb_

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    welcome_path
  end
end

这是我的config / routs.rb

MyApp::Application.routes.draw do
  devise_for :users

  root :to => 'pages#home'

  match "/users",:to => "users#all"
  match "/users/:id",:to => "users#show",:as => :user

  match "/welcome",:to => "users#welcome",:as => :user

  devise_for :users,:controllers => { :registrations => "registrations" } do
    get "/login",:to => "devise/sessions#new"
    get "/register",:to => "devise/registrations#new"
    get "/logout",:to => "devise/sessions#destroy"
    get '/account' => 'devise/registrations#edit'
  end
end

耙路线的输出

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_omniauth_callback        /users/auth/:action/callback(.:format) {:action=>/(?!)/,:controller=>"devise/omniauth_callbacks"}
           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"}
                    root        /                                      {:controller=>"pages",:action=>"home"}
                   users        /users(.:format)                       {:controller=>"users",:action=>"all"}
                    user        /users/:id(.:format)                   {:controller=>"users",:action=>"show"}
                    user        /welcome(.:format)                     {:controller=>"users",:action=>"welcome"}
                   login GET    /login(.:format)                       {:controller=>"devise/sessions",:action=>"new"}
                register GET    /register(.:format)                    {:controller=>"devise/registrations",:action=>"new"}
                  logout GET    /logout(.:format)                      {:controller=>"devise/sessions",:action=>"destroy"}
                 account GET    /account(.:format)                     {:controller=>"devise/registrations",:action=>"edit"}
        new_user_session GET    /users/sign_in(.:format)               {:action=>"new",:controller=>"devise/sessions"}
                         POST   /users/sign_in(.:format)               {:action=>"create",:controller=>"devise/omniauth_callbacks"}
                         POST   /users/password(.:format)              {:action=>"create",:controller=>"devise/passwords"}
                         GET    /users/password/new(.:format)          {:action=>"new",:controller=>"devise/passwords"}
                         GET    /users/password/edit(.:format)         {:action=>"edit",:controller=>"devise/passwords"}
                         GET    /users/cancel(.:format)                {:action=>"cancel",:controller=>"registrations"}
                         POST   /users(.:format)                       {:action=>"create",:controller=>"registrations"}
                         GET    /users/sign_up(.:format)               {:action=>"new",:controller=>"registrations"}
                         GET    /users/edit(.:format)                  {:action=>"edit",:controller=>"registrations"}
                         PUT    /users(.:format)                       {:action=>"update",:controller=>"registrations"}
                         DELETE /users(.:format)                       {:action=>"destroy",:controller=>"registrations"}

解决方法

您在routes.rb中有两次devise_for:users.更改routes.rb如下:

MyApp::Application.routes.draw do
  devise_for :users,:to => "devise/sessions#destroy"
    get '/account' => 'devise/registrations#edit'
  end

  root :to => 'pages#home'

  match "/users",:as => :user

end

如果您有激活/取消激活逻辑,则必须覆盖after_inactive_sign_up_path_for,如设计wiki中所述.注册后你能告诉它被重定向到哪里吗?

after_sign_in_path_for工作的原因可能是您拥有相同的sessions_controller和不同的registrations_controller,因此登录按预期工作,并且注册路由因为您已定义两次而被阻止,因此所有注册请求和操作都在设计/注册而不是您的自定义注册控制器.

所以删除它,如上所述更改routes.rb,看看会发生什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读