J'ai une table utilisateurs (Devise), avec une colonne "admin" (booléen) pour qualifier mes utilisateurs. J'ai aussi un espace de noms "Backend". Je voudrais que mes utilisateurs admins puissent créer de nouveaux utilisateurs à partir de l'espace de noms back-end.créer un nouvel utilisateur d'un autre contrôleur non partenaire
Je créé un Backend::UsersController
:
class Backend::UsersController < ApplicationController
layout 'admin'
before_filter :authenticate_user!
def index
@auteurs = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @auteurs }
end
end
def new
@auteur = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @auteur }
end
end
def create
@auteur = User.new(params[:auteur])
respond_to do |format|
if @auteur.save
format.html { redirect_to @auteur, notice: 'Article was successfully created.' }
format.json { render json: @auteur, status: :created, location: @auteur }
else
format.html { render action: "new" }
format.json { render json: @auteur.errors, status: :unprocessable_entity }
end
end
end
end
est ici la partie "_form" appelé dans la "nouvelle" vue:
<%= simple_form_for(@auteur) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :email %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
Un est ici mes itinéraires:
namespace :backend do
resources :articles
root to: "articles#index"
resources :accueil
resources :users
get "users/index"
get "users/create"
get "users/new"
end
devise_for :users
Mais quand j'essaye d'accéder à "backend/users/new", cela me conduit à cette erreur:
NoMethodError in Backend/users#new
Showing C:/Ruby/acturevue/app/views/backend/users/_form.html.erb where line #1 raised:
undefined method `users_path' for #<#<Class:0x39616b0>:0x416f6d0>
Quelqu'un a-t-il une idée de la source du problème? Merci
MISE À JOUR
Alors, j'ai modifié mon code comme ça:
Dans Backend :: UsersController:
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user}
end
end
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to backend_users_path(@user), notice: 'Article was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
En _form:
<%= simple_form_for(@user) do |f| %>
Mais J'ai toujours le e rror. Cependant, le backend_users_path existe dans les voies y:
backend_users GET /backend/users(.:format) backend/users#
index
POST /backend/users(.:format) backend/users#
create
new_backend_user GET /backend/users/new(.:format) backend/users#
new
edit_backend_user GET /backend/users/:id/edit(.:format) backend/users#
edit
backend_user GET /backend/users/:id(.:format) backend/users#
show
PUT /backend/users/:id(.:format) backend/users#
update
DELETE /backend/users/:id(.:format) backend/users#
destroy
Merci de vous soucier de mon problème, mais l'erreur est toujours là ... Je mettrai à jour mon post pour vous montrer les modifications que j'ai faites. –
Merci Thilo, ça marche! J'ai modifié la _form partielle avec 'simpleform_fom_for ([: backend, @user])' et c'est bon. –