关于mongodb:Rails,Mongoid,查询:不返回文档

Rails, Mongoid, query: Not returns documents

我有一个问题,我一直试图在haml中显示视图,但是这样抛出我:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Started GET"/tipocontenidos/index" for 127.0.0.1 at 2013-07-23 17:22:36 -0500
Processing by TipocontenidosController#index as HTML
  MOPED: 127.0.0.1:27017 COMMAND      database=admin command={:ismaster=>1} (30.4270ms)
  MOPED: 127.0.0.1:27017 QUERY        database=cms_monrails_development_crud_bd collection=ctipocontenido selector={} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (82.3016ms)
  Rendered tipocontenidos/index.html.haml within layouts/application (126.7ms)
Completed 500 Internal Server Error in 187ms

ActionView::Template::Error (undefined method `tipocontenido_path' for #<#<Class:0x000000026ee6f8>:0x000000027c4528>):
    8:
    9:   - @tipocontenidos.each do |tipocontenido|
    10:     %tr
    11:       %td= link_to 'Show', tipocontenido
    12:       %td= link_to 'Edit', edit_tipocontenido_path(tipocontenido)
    13:       %td= link_to 'Destroy', tipocontenido, :method => :delete, :data => { :confirm => 'Are you sure?' }
    14:
  app/views/tipocontenidos/index.html.haml:11:in `block in _app_views_tipocontenidos_index_html_haml__2795259947167794129_19628380'
  app/views/tipocontenidos/index.html.haml:9:in `_app_views_tipocontenidos_index_html_haml__2795259947167794129_19628380'
  app/controllers/tipocontenidos_controller.rb:7:in `index'


  Rendered /home/stivenson/.gem/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
  Rendered /home/stivenson/.gem/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms)
  Rendered /home/stivenson/.gem/ruby/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (7.1ms)

这是我的控制器,(我用" scaffold_controller"生成了该控制器):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class TipocontenidosController < ApplicationController
  # GET /tipocontenidos
  # GET /tipocontenidos.json
  def index
    @tipocontenidos = Tipocontenido.all

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

  # GET /tipocontenidos/1
  # GET /tipocontenidos/1.json
  def show
    @tipocontenido = Tipocontenido.find(params[:id])

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

  # GET /tipocontenidos/new
  # GET /tipocontenidos/new.json
  def new
    @tipocontenido = Tipocontenido.new

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

  # GET /tipocontenidos/1/edit
  def edit
    @tipocontenido = Tipocontenido.find(params[:id])
  end

  # POST /tipocontenidos
  # POST /tipocontenidos.json
  def create
    @tipocontenido = Tipocontenido.new(params[:tipocontenido])

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

  # PUT /tipocontenidos/1
  # PUT /tipocontenidos/1.json
  def update
    @tipocontenido = Tipocontenido.find(params[:id])

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

  # DELETE /tipocontenidos/1
  # DELETE /tipocontenidos/1.json
  def destroy
    @tipocontenido = Tipocontenido.find(params[:id])
    @tipocontenido.destroy

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

这是我的模特:

1
2
3
4
5
6
7
8
class Tipocontenido
  include Mongoid::Document
  store_in collection:"ctipocontenido"

  field :nombretipo, type: String
  belongs_to :aparienciacontenido
  embeds_many :seccion
end

我在与谁合作:

  • ruby1.9.3p448
  • rails3.2.13
  • Rake版本10.1.0
  • MongoDB Shell版本:2.2.3
  • 模样3.1.2
  • 我不理解该错误,因为我在MongoDB数据库中的此集合" ctipocontenido"中创建了一个文档:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    > db.ctipocontenido.find().pretty()
    {
           "_id" : ObjectId("51edfd3fddbc8d2622000001"),
           "nombretipo" :"Colores Suaves 3 partes",
           "seccion" : [
                    {
                           "_id" : ObjectId("51edfd3fddbc8d2622000002"),
                           "nombre" :"Encabezado",
                           "color" :"#e5e5e5",
                           "borde" :"1px solid red",
                           "etiqueta" : [
                                    {
                                           "_id" : ObjectId("51edfd3fddbc8d2622000003"),
                                           "texto" :"T?-tulo",
                                           "tipoletra" :"Verdana",
                                           "tamanioletra" :"7",
                                           "colorletra" :"#000000"
                                    },
                                    {
                                           "_id" : ObjectId("51edfd3fddbc8d2622000004"),
                                           "texto" :"Lema",
                                           "tipoletra" :"Verdana",
                                           "tamanioletra" :"6",
                                           "colorletra" :"#000000"
                                    }
                            ]
                    },
                    {
                           "_id" : ObjectId("51edfd3fddbc8d2622000005"),
                           "nombre" :"Panel Izquierdo",
                           "color" :"#e5e5e5",
                           "borde" :"1px solid red",
                           "etiqueta" : [
                                    {
                                           "_id" : ObjectId("51edfd3fddbc8d2622000006"),
                                           "texto" :"T?-tulo",
                                           "tipoletra" :"Verdana",
                                           "tamanioletra" :"7",
                                           "colorletra" :"#000000"
                                    },
                                    {
                                           "_id" : ObjectId("51edfd3fddbc8d2622000007"),
                                           "texto" :"Lema",
                                           "tipoletra" :"Verdana",
                                           "tamanioletra" :"6",
                                           "colorletra" :"#000000"
                                    }
                            ]
                    }
            ]
    }

    这是我的ruby文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    source 'https://rubygems.org'

    gem 'rails', '3.2.13'
    gem 'execjs'
    gem 'therubyracer'
    gem 'sass'
    gem"haml", '3.1.4'
    gem 'haml-rails'
    gem"mongoid",">= 3.1.2"
    gem 'rake' , '10.1.0'
    gem 'rails3-generators'


    # rails generate model Book --skip-migration --orm=mongomapper
    # Bundle edge Rails instead:
    # gem 'rails', :git => 'git://github.com/rails/rails.git'



    # Gems used only for assets and not required
    # in production environments by default.
    group :assets do
      gem 'jquery-ui-rails'
      # gem 'jquery-ui-themes', '0.0.7'
      gem 'sass-rails',   '~> 3.2.3'
      gem 'coffee-rails', '~> 3.2.1'

      # See https://github.com/sstephenson/execjs#readme for more supported runtimes
      # gem 'therubyracer', :platforms => :ruby

      gem 'uglifier', '>= 1.0.3'
    end

    gem 'jquery-rails'

    # To use ActiveModel has_secure_password
    # gem 'bcrypt-ruby', '~> 3.0.0'

    # To use Jbuilder templates for JSON
    # gem 'jbuilder'

    # Use unicorn as the app server
    # gem 'unicorn'

    # Deploy with Capistrano
    # gem 'capistrano'

    # To use debugger
    # gem 'debugger'

    PD:请问我的英语!!

    非常感谢您! :)


    您在寻找错误的地方。错误是您的config/routes.rb文件有问题。 Rails无法找出与您的控制器中show方法匹配的URL。

    显然,rails generate scaffold_controller不会编辑routes.rb,因此您必须手工完成并向其中添加以下代码:

    1
    resources :tipocontenidos

    这里有一个调试Rails路由的好工具:http://guides.rubyonrails.org/routing.html#listing-existing-routes

    有关路由的更多信息:http://guides.rubyonrails.org/routing.html