私はRails 4.2とDeviseを使用しています。私は次のエラーを取得するパスワードリセットページを使用しようとするたびに:製造においてRails/Devise:指定された場所はありません。 URIを構築できません。パスワードリセット
Nil location provided. Can't build URI. on Password reset
それは、500内部サーバーエラーが付属しています。
リセットトークンを含むメールは実際に送信されます。ユーザーが電子メールでリンクを開くと、サイトに戻ってパスワードを変更することができます。それにもかかわらず、「パスワードリセットボタン」をクリックすると、常に500エラーが発生します。
私はこれまで何度も工夫してきましたが、この問題は一度も起こりませんでした。私はそれがこのチュートリアル次の操作を行うために何かを持っているかもしれませんが疑わ:
と明示的に自分のアプリケーションのコントローラでresource_name
、resource
とdevise_mapping
方法を書いて、まだ彼らは、他の工夫ルートを妨害、とさえしていませんそれらをコメントアウトした後、エラーは持続しています。
編集:
私はPasswordController
がちょうど考案のデフォルト設定のほとんどにこだわる必要はありません。私のアプリでどこでもrespond_with
を使用していません。
私の工夫モデルは次のようになります。
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable, :lockable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:stripe_connect]
validates :username, presence: true
validates :time_zone, presence: true
has_one :teacher, dependent: :destroy
has_many :bookings, foreign_key: :student_id
has_many :reviews, foreign_key: :student_id, dependent: :destroy
has_many :messages, dependent: :destroy
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates_format_of :email, with: VALID_EMAIL_REGEX
end
編集3:ここでは
は、関連する経路である:ここでは
get 'sessions/create'
devise_for :users, :controllers => { :omniauth_callbacks => "omniauth_callbacks" }
resources :users, :only =>[:show]
devise_scope :user do
get 'bookings', to: 'bookings#bookings'
end
は図である。
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :class => "sky-form" }) do |f| %>
<%= devise_error_messages! %>
<h3 class="text-center"><%= t('.header') %></h3>
<section>
<div class="row">
<label class="label col col-4"><%= t('.email') %></label>
<div class="col col-8">
<label class="input">
<%= f.email_field :email %>
</label>
</div>
</div>
</section>
<footer class="text-right">
<%= f.submit t('.resetpwbtn'), class: "btn btn-theme-bg btn-lg" %>
</footer>
<% end %>
JSON APIを呼び出していますか? –
Shiv Raj:いいえ、私はそうではありません。 – dedles
Deviseモデル、PasswordsControllerがあればそれを共有する必要があります。Deviseによって生成された移行ファイルなどの情報も必要です。 –