Разработчик gem admin может добавить пользователя в пользовательскую модель - PullRequest
0 голосов
/ 12 февраля 2020

Я использую devise gem для аутентификации в Rails. Я хочу создать панель администратора, которая может добавлять пользователя в модель User. Я могу преобразовать форму в admin#index представление, но не могу вставить данные в модель пользователя.

rout.rb

# when i use post method in this route i get routing error 
get '/admin' => "admin#index", as: :create_user

Индекс администратора. html .erb

<%= form_for User.new, url: create_user_path do |f| %>

<div class="log-in-form">
  <h2 class="login-header text-center">Sign up</h2>

    <div class="field">
      <%= f.label :name %><br />
      <%= f.text_field :name %>
    </div>

    <div class="field">
      <%= f.label :password %>
      <% if @minimum_password_length %>
      <em>(<%= @minimum_password_length %> characters minimum)</em>
      <% end %><br />
      <%= f.password_field :password, autocomplete: "new-password" %>
    </div>

    <div class="field">
      <%= f.label :password_confirmation %><br />
      <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
    </div>

    <div class="actions">
      <%= f.submit "Sign up" %>
    </div>

<% end %>

admin_controller.rb

def index
  end

  def new
    @user = User.new
end

def create
    @user = User.new(user_params)

    if User.save
        redirect_to root_path
    else
        render :new
    end
end

  private

  def user_params
  params.require(:user).permit(:name,:password)
end

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Добавьте следующую строку в ваш config / rout.rb

post '/admin' => 'admin#index'
0 голосов
/ 12 февраля 2020

Сэр, вам крайне необходимо прочитать и понять это: https://guides.rubyonrails.org/routing.html

Ответ:

Вы определили маршрут как get метод сам, и вы ожидаете post к нему. Вы видите что-то очень странное здесь? Как новичок, старайтесь не отклоняться от базовых c CRUD-маршрутов, которые вам предоставляет rails. В вашем случае, сделайте это в routes.rb:

resources :users

# OR:
# resources :users, only: %i[index show create update destroy]
# any names of CRUD functions that you probably will use (to avoid extra routes)

Теперь, в вашем html файле измените url: create_user_path на url: users_path. Кстати, по крайней мере, сделайте привычкой проверять ваши маршруты в терминале, как в вашем случае: rails routes | grep user даст вам маршруты рельсов, на которых есть слово user.

Теперь это должно работать.

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