Я работаю над приложением rails, используя администратор rails. У меня есть интерфейс администратора с ресурсом под названием admin_users
, который контролируется devise. Прямо сейчас, пользователи действительно создаются только в консоли rails, и было добавлено устройство, позволяющее пользователям создавать универсальные возможности. На этой панели я хочу создать опцию admin_users для дополнительных пользователей, которых я хочу пригласить в приложение, поскольку это проще, чем делать это с консоли rails в рабочей среде.
У меня есть контроллер, Admin::AdminUsersController
для обработки этой функциональности в соответствии с приборной панелью. прямо сейчас в нем перечислены текущие admin_users в системе, которые были созданы с консоли rails, и это прекрасно работает.
Теперь я добавляю возможность создавать пользователей-администраторов из интерфейса администрирования rails. Однако при заполнении формы на admin/admin_users/new
devise, похоже, перехватывает запрос и пытается выйти из системы. Глядя на мой сервер rails, вот журналы
app_1 | Started POST "/admin/admin_users" for 192.168.96.1 at 2020-02-25 02:38:41 +0000
app_1 | Cannot render console from 192.168.96.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
app_1 | Processing by Devise::RegistrationsController#create as HTML
app_1 | Parameters: {"authenticity_token"=>"LPbT7OCx8upC5ehWIZ1JV/o/UKttciyoThOgi06B4AUw8ve3x/stbjUT7Trvb9u0YMEoyEBobbbni0g7LNWvBg==", "admin_user"=>{"email"=>"test@somemail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "reset_password_token"=>"[FILTERED]", "reset_password_sent_at"=>"[FILTERED]", "remember_created_at"=>""}, "commit"=>"Create Admin user"}
app_1 | AdminUser Load (0.6ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2 [["id", "2d795b9d-2b6f-4745-a58d-775076100c60"], ["LIMIT", 1]]
app_1 | Redirected to http://localhost:3000/
app_1 | Filter chain halted as :require_no_authentication rendered or redirected
app_1 | Completed 302 Found in 6ms (ActiveRecord: 0.6ms | Allocations: 2088)
app_1 |
app_1 |
app_1 | Started GET "/" for 192.168.96.1 at 2020-02-25 02:38:41 +0000
app_1 | Cannot render console from 192.168.96.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
app_1 | Processing by Rails::WelcomeController#index as HTML
app_1 | Rendering /usr/local/bundle/gems/railties-6.0.2.1/lib/rails/templates/rails/welcome/index.html.erb
app_1 | Rendered /usr/local/bundle/gems/railties-6.0.2.1/lib/rails/templates/rails/welcome/index.html.erb (Duration: 3.6ms | Allocations: 201)
app_1 | Completed 200 OK in 6ms (Views: 5.4ms | ActiveRecord: 0.0ms | Allocations: 1004)
app_1 |
И я не могу заставить контроллер выполнить мое действие Admin::AdminUsersController#create
. Глядя на журналы, похоже, что он попадает в мой почтовый маршрут на /admin/admin_users
, devise перехватывает его на Devise::RegistrationsController#create
, останавливается с Filter chain halted as :require_no_authentication
, а затем перенаправляет на мой root маршрут, который похож на тот, когда я выхожу из системы.
Я даже добавил представление для переопределения административных представлений по умолчанию на app/views/admin/admin_users/new.html.erb
, чтобы вызвать форму на go для искомого действия контроллера, например
<section class="main-content__body">
<%= form_for([namespace, page.resource], :url => url_for(:controller => 'admin/admin_users', :action => 'create'), html: { class: "form" }) do |f| %>
<% if page.resource.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(page.resource.errors.count, "error") %>
prohibited this <%= page.resource_name %> from being saved:
</h2>
<ul>
<% page.resource.errors.full_messages.each do |message| %>
<li class="flash-error"><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% page.attributes.each do |attribute| -%>
<div class="field-unit field-unit--<%= attribute.html_class %>">
<%= render_field attribute, f: f %>
</div>
<% end -%>
<div class="form-actions">
<%= f.submit %>
</div>
<% end %>
</section>
I Я также пытался добавить к моим devise_scope :admin_user
в моих маршрутах, таких как
devise_scope :admin_user do
post "/admin/admin_users", to: 'admin/admin_users#create'
end
, которые ничего не сделали.
Функциональность, которую я ищу, - это когда я на своей панели администратора admin_users, чтобы создать admin_user, используя мое действие Admin::AdminUsersController#create
вместо действия Devise::RegistrationsController#create
.
Кто-нибудь знает, что я нужно добавить, чтобы включить это?