Така че, имам RailsApp и реших да направя вграден контролер на моите потребители, наречен backoffice.
Моите маршрути до индекса работят добре, но когато се опитвам да редактирам или да създам потребител, получавам следната грешка:
NoMethodError in Backoffice::Users#new
undefined method `users_path" for #<#
<Class:0x007efc6d4fd1c8>:0x007efc6cd38708>
Did you mean? user_session_path
Ето моите маршрути:
Rails.application.routes.draw do
resources :advertises
resources :categories
devise_for :users
namespace :backoffice do
resources :users, except: [:show]
end
end
Използвам Rails 5.1.4, така че "form_tag" и "form_for" се заменят за "form_with"
Ето моя _form.html.erb къде съм моят проблем:
<%= form_with(model: user, root: true) do |form| %>
Структурата на контролера е
class Backoffice::UsersController < BackofficeController
before_action :set_user, only: [:show, :edit, :update, :destroy]
before_action :pundit_user
....
Може ли проблемът да бъде с измисли? Или това е просто вложена грешка на контролера?
Отговори:
0 за отговор № 1Вероятно трябва да преместите devise_for
обадете се в :backoffice
като това е мястото, където се намира ресурсът на потребителите.
Ако тичаш rails routes
в командния ред ще видите проблема. Devise се опитва да се обади users_path
но това не съществува, какво съществува backoffice_users_path