【问题标题】:Devise /users/confirmation route设计 /users/confirmation 路径
【发布时间】:2013-01-21 01:49:48
【问题描述】:

无法确认电子邮件,有设计。

route.rb

  devise_for :users, :controllers => { :sessions => "users/sessions" ,:omniauth_callbacks => "users/omniauth_callbacks" } do
    post   "users/confirmation",          :to => "devise/confirmations#create"
    get    "users/confirmation/new",      :to => "devise/confirmations#new", :as => "new_confirmation"
    get    "users/confirmation",          :to => "devise/confirmations#show"
  end
  resources :pensioners #, :only => [:index, :destroy, :new]
  resources :users #, :only => [:index, :destroy, :new]

heroku 运行 rake 路线

                                                             ....
   user_confirmation POST   /users/confirmation(.:format) devise/confirmations#create

   new_user_confirmation GET    /users/confirmation/new(.:format) devise/confirmations#new

                  GET    /users/confirmation(.:format)          devise/confirmations#show

                                                              ....

但是当我提出请求

    GET /users/confirmation?confirmation_token=BeELxDDq9sxpseLh8Rdn 

我收到 404 错误

  The page you were looking for doesn't exist.
  You may have mistyped the address or the page may have moved.

我哪里错了?

型号

 class User < ActiveRecord::Base
      devise .... , :confirmable

迁移

class AddConfirmableToUsers < ActiveRecord::Migration
  def up
   add_column :users, :confirmation_token, :string
   add_column :users, :confirmed_at, :datetime
   add_column :users, :confirmation_sent_at, :datetime
   add_index :users, :confirmation_token, :unique => true
   User.update_all(:confirmed_at => Time.now)
  end
  ....

【问题讨论】:

    标签: ruby-on-rails devise routing confirmation devise-confirmable


    【解决方案1】:

    有点晚了,但无论如何。尝试使用 PATCH 而不是 GET。你的routes.rb 应该有这样的路线

    patch '/user/confirmation' => 'user/confirmations#update', :via => :patch, :as => :update_user_confirmation
    

    【讨论】:

    • @issy 抱歉回复晚了。如果您仍然需要它,这里是:patch '/user/confirmation' =&gt; 'user/confirmations#update', :via =&gt; :patch, :as =&gt; :update_user_confirmation
    • 我不明白如何应用该修复程序,您能详细说明一下吗?
    • @Saibot 我已经更新了答案,但不知道还能说什么。我已经很久没有使用设计了。
    • 我是 web 开发的新手,所以要弄清楚这个修复属于路由并不容易。 :) 几个小时后自己找到了,但还是谢谢。
    • @Saibot 很高兴你知道了!我相信自学是最有用的。不管怎样,祝你旅途愉快:)
    【解决方案2】:

    在 Rails 4.2.10 和 Devise 4.4.3 中,这对我有用:

    devise_for :users, controllers: { registrations: 'registrations',
                                      sessions: 'sessions',
                                      confirmations: 'confirmations' }
    devise_scope :user do
      # custom routes...
      get 'confirmation/sent' => 'confirmations#sent'
      patch 'users/confirmation' => 'confirmations#create'
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 2015-12-09
      相关资源
      最近更新 更多