「How To: Allow users to edit their password」を参照として初めてサインインした後にパスワードリセットを実装しようとしています。Devitsを使用して初めてログインした後にパスワードをリセットする方法
私は、次のエラーを取得しています:
Routing Error
No route matches [GET] "/user/update_password"
は、私は記事の最後に完全なトレースを追加しました。
私には何が欠けていますか?
私はRails '4.2.6'を使用しています。
アプリケーションコントローラ:
class ApplicationController < ActionController::Base
after_filter :reset_last_captcha_code!
protect_from_forgery with: :exception
def after_sign_in_path_for(resource)
if current_user.sign_in_count == 1
update_password_user_path
else
root_path
end
end
end
ビュー:
<%= form_for(@user, :url => { :action => "update_password" }) do |f| %>
<div class="field">
<%= f.label :password, "Password" %><br />
<%= f.password_field :password, :autocomplete => "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</div>
<div class="action_container">
<%= f.submit %>
</div>
<% end %>
ルート:
resource :user, only: [:edit] do
collection do
patch 'update_password'
end
end
ユーザーモデル:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
完全なトレース:
actionpack (4.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
actionpack (4.2.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.6) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.6) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.6) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.6) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.5) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.5) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.5) lib/rack/lock.rb:17:in `call'
actionpack (4.2.6) lib/action_dispatch/middleware/static.rb:120:in `call'
rack (1.6.5) lib/rack/sendfile.rb:113:in `call'
railties (4.2.6) lib/rails/engine.rb:518:in `call'
railties (4.2.6) lib/rails/application.rb:165:in `call'
rack (1.6.5) lib/rack/lock.rb:17:in `call'
rack (1.6.5) lib/rack/content_length.rb:15:in `call'
rack (1.6.5) lib/rack/handler/webrick.rb:88:in `service'
/Users/jj/.rbenv/versions/2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service'
/Users/jj/.rbenv/versions/2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'
/Users/jj/.rbenv/versions/2.3.0/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread'
に変換する方法の詳細については
あなたは '/ユーザー/ update_password'に直接移動しようとしている
routes.rb
の代わりにあなたのブラウザで?このチュートリアルでは、あなたのビューコードを 'user/edit'に入れ、そこであなたのパスワードを更新するつもりです。 – eikoビュー内の@eiko私はuserと呼ばれるフォルダを作成し、編集テンプレートを追加しました。 – evanx
あなたのブラウザの '/ user/edit'に行くと、フォームに記入すると、提出時に上記のエラーが表示されますか? – eiko