2013-07-23 79 views
0

我有一个问题,我一直在努力表现出HAML视图,但抛出我:轨,Mongoid,查询:不返回文档

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”):

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 

这是我的模型:

class Tipocontenido 
    include Mongoid::Document 
    store_in collection: "ctipocontenido" 

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

我一起工作:

  1. 红宝石1.9.3p448
  2. 的Rails 3.2.13
  3. 耙版本10.1.0
  4. MongoDB的外壳版本:2.2.3
  5. mongoid 3.1.2

我不不明白,因为我有一个文件在我的MongoDB数据库中创建的这个集合“ctipocontenido”:

> 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" 
           } 
         ] 
       } 
     ] 
} 

这是我的宝石文件:

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:对不起,我的英语!

非常感谢您提前! :)

回答

1

你正在看错了地方。错误是说你的config/routes.rb文件有问题。 Rails无法弄清楚控制器中的show方法与哪个URL匹配。

显然rails generate scaffold_controller不编辑routes.rb,所以你必须用手工做出来,下面的代码添加到它:

resources :tipocontenidos 

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

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