2016-03-25 14 views
0

私はRails 4.2とDeviseを使用しています。私は次のエラーを取得するパスワードリセットページを使用しようとするたびに:製造においてRails/Devise:指定された場所はありません。 URIを構築できません。パスワードリセット

Nil location provided. Can't build URI. on Password reset 

それは、500内部サーバーエラーが付属しています。

リセットトークンを含むメールは実際に送信されます。ユーザーが電子メールでリンクを開くと、サイトに戻ってパスワードを変更することができます。それにもかかわらず、「パスワードリセットボタン」をクリックすると、常に500エラーが発生します。

私はこれまで何度も工夫してきましたが、この問題は一度も起こりませんでした。私はそれがこのチュートリアル次の操作を行うために何かを持っているかもしれませんが疑わ:

https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

と明示的に自分のアプリケーションのコントローラでresource_nameresourcedevise_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 %> 
+0

JSON APIを呼び出していますか? –

+0

Shiv Raj:いいえ、私はそうではありません。 – dedles

+0

Deviseモデル、PasswordsControllerがあればそれを共有する必要があります。Deviseによって生成された移行ファイルなどの情報も必要です。 –

答えて

0

を使用している場合これはリソースでのみ使用できます。私はその問題を抱えており、修正はあなたにあったrender

この場合

render :text => 'false' 

のようなものは、おそらく助けることができます。しかし、問題の詳細を把握するためにはモデルを確認する必要があります。

もう1つの問題は、responds_withActiveRecordオブジェクトがルートをマップすることを期待している可能性があります。

私はあなたのコード内でどのように実装されているのか正確にはわかりませんが、これは私が過去にこのエラーを解決したいくつかの方法です。

+0

私はちょうど見て、私のアプリのどこでも' respond_with'を使っていません。あなたが気にするなら、私のモデルで更新しました。 – dedles

+0

あなたのルートはどのように見えるのですか?これは開発中に機能しますか? –

+0

関連するルートとビューを追加しました。また、いいえ、それは開発のいずれかで動作しません。実際には電子メールは送信され、プロセスは機能します。フォームがサイトクラッシュを提出した後であれば簡単です。 – dedles

関連する問題