Редактировать других пользователей, придумать ruby ​​на рельсах Ошибка неопределенная локальная переменная или метод имя_ресурса - PullRequest
0 голосов
/ 11 февраля 2019

Я настраиваю систему управления арендодателем и пытаюсь управлять другими пользователями.В настоящее время у меня есть admin как логический атрибут в моей модели пользователей, поэтому я хотел бы отредактировать других пользователей и сделать их администраторами через форму редактирования.

Я пытаюсь сделать это с помощью влияния из этого поста Редактируйте другого пользователя как администратора в devise, ruby ​​on rails

Так вот мой код:

Routes.rb

devise_for :users, :path_prefix => 'my'
resources :users

views \ users \ edit

<h2>Edit <%= resource_name.to_s.humanize %></h2>

<%= form_for(@user) do |f| %>
<%= f.error_notification %>

<div class="form-inputs">
<%= f.input :email, required: true, autofocus: true %>

<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
  <p>Currently waiting confirmation for: <%= resource.unconfirmed_email %> 
</p>
<% end %>

<%= f.input :password,
            hint: "leave it blank if you don't want to change it",
            required: false,
            input_html: { autocomplete: "new-password" } %>
<%= f.input :password_confirmation,
            required: false,
            input_html: { autocomplete: "new-password" } %>
<%= f.input :admin,
            required: false %>
<%= f.input :current_password,
            hint: "we need your current password to confirm your changes",
            required: true,
            input_html: { autocomplete: "current-password" } %>
</div>

<div class="form-actions">
<%= f.button :submit, "Update" %>
</div>
<% end %>

<h3>Cancel my account</h3>

<p>Unhappy? <%= link_to "Cancel my account", 
registration_path(resource_name), data: { confirm: "Are you sure?" }, 
method: :delete %></p>

контроллеры \ пользователи

class UsersController < ApplicationController

def edit
@user = User.find(params[:id])
end


def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to adminpanel_path
else
render 'edit'
end
end

end

Выпуск

если я зайду на http://localhost:3000/users/2/edit для редактирования пользователя, я получуследующая ошибка undefined local variable or method resource_name for #<#<Class:0x8b9df40>:0x8ba7360>

1 Ответ

0 голосов
/ 12 февраля 2019
undefined local variable or method resource_name for #<#<Class:0x8b9df40>:0x8ba7360>

сообщает, что имя_ресурса не определено.Удалите все ссылки на ресурсы из вашей формы, и это будет работать.Что касается ссылки отмены вашего аккаунта:

<%= link_to "Cancel my account", 
registration_path(resource_name), data: { confirm: "Are you sure?" }, 
method: :delete %></p>

вам нужно изменить имя_ресурса на идентификатор пользователя, которого вы хотите удалить.

Я также видел, что вы используете настраиваемые атрибуты для devise:

<%= f.input :admin,
            required: false %>

Вы разрешили их?В противном случае это будет вашей следующей ошибкой.Если вы не знаете, как это сделать, прокомментируйте быстро, и я обновлю свой ответ.

Привет!

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