0

ユーザーを修飾するための列「admin」(ブール値)を持つusersテーブル(Devise)があります。名前空間「バックエンド」もあります。管理者ユーザーがバックエンド名前空間から新しいユーザーを作成できるようにしたいと思います。

だから私は作成しました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

しかし、「backend / users / new」にアクセスしようとすると、次のエラーが発生します。

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>

誰かが問題の原因について何か考えを持っていますか?ありがとう

アップデート

だから、私はそのように私のコードを変更しました:

バックエンド::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
4

1 に答える 1

0

リダイレクトで名前空間を使用する必要があります。

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

この質問に対する私の答えを参照してください。

于 2012-11-10T21:50:28.303 に答える