【问题标题】:Routes not changing upon editing controller编辑控制器时路由不会改变
【发布时间】:2017-05-02 03:52:17
【问题描述】:

我正在将设计配置为与两个omniauth 提供程序一起使用:twitter 和github。首先实现了 github,我在 OmniauthCallbacksController 中创建了一个 github 方法。后来决定我也想使用 twitter,我重新配置了我的控制器,放弃了 github 方法,转而为两个提供者提供更复杂的实现。

问题是当我运行 rake routes 时,出现的只是旧的 github 方法,而且似乎我对控制器的更改甚至没有被识别。我什至可以从控制器中删除所有内容,而我的rake routes 结果保持不变。我在下面附上了相关文件。非常感谢您能给我的任何见解。

我的路由文件如下(注意现在不存在的users/omniauth_callbacks#github 方法的存在):

Rails.application.routes.draw do

  resources :issues
  resources :submissions
  resources :home

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  match '/users/:id/finish_signup' => 'users#finish_signup', via: [:get, :patch], :as => :finish_signup

  root to: "home#index"
end

当我运行rake:routes 时,我得到以下信息:

$ rake routes
                        Prefix Verb      URI Pattern                           Controller#Action
                        issues GET       /issues(.:format)                     issues#index
                               POST      /issues(.:format)                     issues#create
                     new_issue GET       /issues/new(.:format)                 issues#new
                    edit_issue GET       /issues/:id/edit(.:format)            issues#edit
                         issue GET       /issues/:id(.:format)                 issues#show
                               PATCH     /issues/:id(.:format)                 issues#update
                               PUT       /issues/:id(.:format)                 issues#update
                               DELETE    /issues/:id(.:format)                 issues#destroy
                   submissions GET       /submissions(.:format)                submissions#index
                               POST      /submissions(.:format)                submissions#create
                new_submission GET       /submissions/new(.:format)            submissions#new
               edit_submission GET       /submissions/:id/edit(.:format)       submissions#edit
                    submission GET       /submissions/:id(.:format)            submissions#show
                               PATCH     /submissions/:id(.:format)            submissions#update
                               PUT       /submissions/:id(.:format)            submissions#update
                               DELETE    /submissions/:id(.:format)            submissions#destroy
                    home_index GET       /home(.:format)                       home#index
                               POST      /home(.:format)                       home#create
                      new_home GET       /home/new(.:format)                   home#new
                     edit_home GET       /home/:id/edit(.:format)              home#edit
                          home GET       /home/:id(.:format)                   home#show
                               PATCH     /home/:id(.:format)                   home#update
                               PUT       /home/:id(.:format)                   home#update
                               DELETE    /home/:id(.:format)                   home#destroy
user_github_omniauth_authorize GET|POST  /users/auth/github(.:format)          users/omniauth_callbacks#passthru
 user_github_omniauth_callback GET|POST  /users/auth/github/callback(.:format) users/omniauth_callbacks#github
              new_user_session GET       /users/sign_in(.:format)              devise/sessions#new
                  user_session POST      /users/sign_in(.:format)              devise/sessions#create
          destroy_user_session DELETE    /users/sign_out(.:format)             devise/sessions#destroy
                 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
                               PATCH     /users/password(.:format)             devise/passwords#update
                               PUT       /users/password(.:format)             devise/passwords#update
      cancel_user_registration GET       /users/cancel(.:format)               devise/registrations#cancel
             user_registration POST      /users(.:format)                      devise/registrations#create
         new_user_registration GET       /users/sign_up(.:format)              devise/registrations#new
        edit_user_registration GET       /users/edit(.:format)                 devise/registrations#edit
                               PATCH     /users(.:format)                      devise/registrations#update
                               PUT       /users(.:format)                      devise/registrations#update
                               DELETE    /users(.:format)                      devise/registrations#destroy
                 finish_signup GET|PATCH /users/:id/finish_signup(.:format)    users#finish_signup
                          root GET       /                                     home#index

我的新 Oauth 回调控制器如下所示:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def self.provides_callback_for(provider)
    class_eval %Q{
      def #{provider}
        @user = User.find_for_oauth(env["omniauth.auth"], current_user)

        if @user.persisted?
          sign_in_and_redirect @user, event: :authentication
          set_flash_message(:notice, :success, kind: "#{provider}".capitalize) if is_navigational_format?
        else
          session["devise.#{provider}_data"] = env["omniauth.auth"]
          redirect_to new_user_registration_url
        end
      end
    }
  end

  [:twitter, :github].each do |provider|
    provides_callback_for provider
  end

  def after_sign_in_path_for(resource)
    if resource.email_verified?
      super resource
    else
      finish_signup_path(resource)
    end
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 devise routing omniauth


    【解决方案1】:

    想通了!原来问题不在于我发布的任何文件。在User 模型中,我有以下行:omniauth_providers: [:github] 我需要向其中添加 twitter。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多