Аргумент Получение первого в форме не может содержать ноль или быть пустым при попытке разрешить пользователям редактировать свой пароль - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь добавить решение, позволяющее пользователям менять свой пароль.Я использую устройство.И я выполнил третье решение из этого урока .Однако после того, как я все сделаю:

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|

я что-то пропустил?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...