2012-11-10 40 views
0

我有一個用戶表(設計),列「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> 

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

UPDATE

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

在後端:: 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 

在_form:

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

但我仍然有e RROR。 然而backend_users_path存在於Ÿ路線:

  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 

回答

0

您需要使用的命名空間在您的重定向:

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

見我的回答this question

+0

謝謝您關心我的問題,但錯誤仍然存​​在...我會更新我的帖子,向您展示我所做的修改。 –

+0

謝謝Thilo,它的工作原理!我用'simpleform_fom_for([:backend,@user])'修改了_form部分,這很好。 –