Melbourne2991
Melbourne2991

Reputation: 11797

Adding a new namespace for admin area

I am attempting to move one of my controllers (Testo) into the admin space, I have changed to route file as so:

namespace :admin do
  resources :testos
end

Class name for the controller:

class TestosController < ApplicationController

Error I am getting:

uninitialized constant Admin::TestosController

Rake routes gives me:

        root        /                                Pages#index
    admin_testos GET    /admin/testos(.:format)          admin/testos#index
             POST   /admin/testos(.:format)          admin/testos#create
 new_admin_testo GET    /admin/testos/new(.:format)      admin/testos#new
edit_admin_testo GET    /admin/testos/:id/edit(.:format) admin/testos#edit
     admin_testo GET    /admin/testos/:id(.:format)      admin/testos#show
             PUT    /admin/testos/:id(.:format)      admin/testos#update
             DELETE /admin/testos/:id(.:format)      admin/testos#destroy

Full TestosController:

class Admin::TestosController < ApplicationController
  # GET /testos
  # GET /testos.json
  def index
    @testos = Testo.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @testos }
    end
  end

  # GET /testos/1
  # GET /testos/1.json
  def show
    @testo = Testo.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @testo }
    end
  end

  # GET /testos/new
  # GET /testos/new.json
  def new
    @testo = Testo.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @testo }
    end
  end

  # GET /testos/1/edit
  def edit
    @testo = Testo.find(params[:id])
  end

  # POST /testos
  # POST /testos.json
  def create
    @testo = Testo.new(params[:testo])

    respond_to do |format|
      if @testo.save
        format.html { redirect_to @testo, notice: 'Testo was successfully created.' }
        format.json { render json: @testo, status: :created, location: @testo }
      else
        format.html { render action: "new" }
        format.json { render json: @testo.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /testos/1
  # PUT /testos/1.json
  def update
    @testo = Testo.find(params[:id])

    respond_to do |format|
      if @testo.update_attributes(params[:testo])
        format.html { redirect_to @testo, notice: 'Testo was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @testo.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /testos/1
  # DELETE /testos/1.json
  def destroy
    @testo = Testo.find(params[:id])
    @testo.destroy

    respond_to do |format|
      format.html { redirect_to testos_url }
      format.json { head :no_content }
    end
  end
end

and here is the view file:

Listing testos

<table>
  <tr>
    <th>Title</th>
    <th>Entry</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @testos.each do |testo| %>
  <tr>
    <td><%= testo.title %></td>
    <td><%= testo.entry %></td>
    <td><%= link_to 'Show', testo %></td>
    <td><%= link_to 'Edit', edit_testo_path(testo) %></td>
    <td><%= link_to 'Destroy', testo, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Testo', new_testo_path %>

Upvotes: 0

Views: 59

Answers (1)

just so
just so

Reputation: 1138

Your class declaration should read as:

class Admin::TestosController < ApplicationController

Upvotes: 1

Related Questions