ActionController :: RoutingError (Неинициализированная константа AdminsController) - PullRequest
1 голос
/ 17 ноября 2011

Я использую Rails 3 с dhtmlxGrid.Я создал контроллер с именем admin, в котором мы определили 3 функции, такие как view, data, dbaction и их файлы просмотра.

Ниже представлен мой admin файл контроллера.

 class AdminController < ApplicationController

 def view

 end

 def data

 @users = User.all()

 end

def dbaction
    #called for all db actions

    first_name = params["c0"]
    last_name    = params["c1"]
    phone            = params["c2"]

    @mode = params["!nativeeditor_status"]

    @id = params["gr_id"]
    case @mode
        when "inserted"
            user = User.new
            user.first_name = first_name
            user.last_name = last_name
            user.phone = phone
            user.save!

            @tid = user.id
        when "deleted"
            user=User.find(@id)
            user.destroy

            @tid = @id
        when "updated"
            user=User.find(@id)
            user.first_name = first_name
            user.last_name = last_name
            user.phone = phone
            user.save!

            @tid = @id
    end 
 end 
end

Ниже мой файл view.rhtml.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <script src="/javascripts/codebase/dhtmlxcommon.js" type="text/javascript"       charset="utf-8"></script>
    <script src="/javascripts/codebase/dhtmlxgrid.js" type="text/javascript" charset="utf-8"></script>
    <script src="/javascripts/codebase/dhtmlxgridcell.js" type="text/javascript" charset="utf-8"></script>

    <link rel="stylesheet" href="/javascripts/codebase/dhtmlxgrid.css" type="text/css" media="screen" charset="utf-8">
    <link rel="stylesheet" href="/javascripts/codebase/skins/dhtmlxgrid_dhx_skyblue.css" type="text/css" media="screen" charset="utf-8">
    <script src="/javascripts/codebase/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    <div id="grid_here" style="width:600px; height:400px;">
    </div>
    <script type="text/javascript" charset="utf-8">
        var grid = new dhtmlXGridObject("grid_here");
        grid.setImagePath("/javascripts/codebase/imgs/");
        grid.setHeader("First name, Last name, Phone");
        grid.setInitWidths("100,100,*");
        grid.setSkin("dhx_skyblue");
        grid.init();
        grid.load("/admin/data.xml");

        db = new dataProcessor("/admin/dbaction.xml");

        db.init(grid);
    </script>


   <input type="button" value="Add" onclick="grid.addRow(grid.uid(),'new user')">
    <input type="button" value="Delete" onclick="grid.deleteSelectedRows()">
</body>

Ниже мой файл data.rxml.

xml.instruct! :xml, :version=>"1.0" 

xml.tag!("rows") do
  @users.each do |user|
    xml.tag!("row",{ "id" => user.id }) do
        xml.tag!("cell", user.first_name)
        xml.tag!("cell", user.last_name)
        xml.tag!("cell", user.phone)
     end
  end
end

нижемой файл dbaction.rxml.

xml.instruct! :xml, :version=>"1.0" 

 xml.tag!("data") do

 xml.tag!("action",{ "type" => @mode, "sid" => @id, "tid" => @tid }) 

end

Ниже мой файл route.rb.

resource :admin do
  collection do
     get 'view'
     get 'data'
     get 'dbaction'
   end
 end

Ниже приведен файл миграции.

class CreateUsers < ActiveRecord::Migration
   def self.up

    create_table :users do |t|
        t.string :first_name
        t.string :last_name
        t.string :phone
    t.timestamps
 end

 user.create(
    :first_name => "John",
    :last_name => "Smith",
    :phone => "997347854")

user.create(
    :first_name => "Stanislav",
    :last_name => "Wolski",
    :phone => "465764778"
  end

 def self.down
  drop_table :users
 end

end

Это ссылка, которую я использовал для разработки вышеуказанной программы http://www.dhtmlx.com/blog/?p=426

Ответы [ 2 ]

1 голос
/ 18 марта 2017

Просто чтобы добавить к тому, что сказал @Paul. Rails действительно нравится, когда вы используете множественное число для своих контроллеров, но в конце дня, если вы можете сопоставить имя файла admin_controller.rb и имя класса AdminController затем это также должно работать хорошо.

В противном случае соглашение о рельсах по методологии конфигурации диктует множественное использование имен контроллеров.

1 голос
/ 17 ноября 2011

Попробуйте изменить имя вашего контроллера на AdminsController. Rails, похоже, предпочитает множественные имена контроллеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...