Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2013, 14:13
Avatar de calichecal
calichecal
 
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 14 años, 10 meses
Puntos: 12
Busqueda Problema con Rails y mongoDB: mongoid y un query que no retorna nada

Hola a todos, agradezco su ayuda, He hecho de todo para solucionar el siguiente problema:

Estoy intentando mostrar un listado de documentos (0.0.0.0:3000/tipocontenidos/index) que esta en una colección en una base de datos mongoDB, pero la salida me arroja:

Código:
    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)

Este es mi controlador, el cual genere con scaffold_controller

Código:
  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

En mi base de datos mongodb ya tengo un documento en la colección que quiero traer a la vista, pero tal parece que el Modelo no esta trayendo el listado. (Osea la instrucción "Tipocontenido.all" en el controlador que muestro arriba)

Ya intente todo inclusive utilizando scope en el modelo.

Este es mi modelo:

Código:
class Tipocontenido
  include Mongoid::Document
  store_in collection: "ctipocontenido"
  
  field :nombretipo, type: String
  has_one :contenido
  embeds_many :seccion
  
# lo ultimo que en intentado, pero no me trae ni un solo documento. (Solo tengo uno)
  scope :todos, where(nombretipo: "Colores Suaves 3 partes")

end

Estoy trabajando con:

1. Ruby 1.9.3p448
2. Rails 3.2.13
3. Rake version 10.1.0
4. MongoDB shell version: 2.2.3
5. mongoid 3.1.2

Mi documento en mongodb:


Código:
    > 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"
                                    }
                            ]
                    }
            ]
    }

Y por ultimo les muestro mi archivo gemfile:

Código:
    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'

Agradezco sus recomendaciones y soluciones...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 24/07/2013 a las 14:23