簡體   English   中英

從另一個非設計者控制器創建新的設計者用戶

[英]create new devise user from another non devise controller

我有一個用戶表(Devise),其中有一列“ admin”(布爾值)來限定我的用戶。 我也有一個名稱空間“后端”。 我希望我的管理員用戶可以從后端名稱空間創建新用戶。

所以我創建了一個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

這是在“新”視圖中調用的“ _form”部分:

<%= 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 %>

這是我的路線:

 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

但是,當我嘗試訪問“后端/用戶/新”時,將我帶到此錯誤:

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>

有人對問題的根源有任何想法嗎? 謝謝

更新

所以,我像這樣修改了我的代碼:

在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

通知 :

<%= simple_form_for(@user) do |f| %>

但是我仍然有錯誤。 但是backend_users_path存在於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

您需要在重定向中使用名稱空間:

redirect_to [:backend, @auteur] #...

請參閱我對這個問題的回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM