Я пытаюсь добавить решение, позволяющее пользователям менять свой пароль.Я использую устройство.И я выполнил третье решение из этого урока .Однако после того, как я все сделаю:
class UsersController < ApplicationController
before_action :authenticate_user!
def edit
@user = current_user
end
def update_password
@user = current_user
if @user.update_with_password(user_params)
# Sign in the user by passing validation in case their password changed
bypass_sign_in(@user)
redirect_to root_path
else
render "edit"
end
end
private
def user_params
# NOTE: Using `strong_parameters` gem
params.require(:user).permit(:password, :password_confirmation, :current_password)
end
end
в rout.rb
resource :user, only: [:edit] do
collection do
patch 'update_password'
end
end
и в представлении:
<%= form_for(@user, :url => { :action => "update_password" } ) do |f| %>
<div class="field">
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %>
</div>
<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 %>
но я получаю эту ошибку First argument in form cannot contain nil or be empty
в
= form_for(@user, :url => { :action => 'update_password' } ) do |f|
я что-то пропустил?Спасибо!