método indefinido `clave?' para nil:NilClass cuando se usa MongoMapper

Configuré una nueva aplicación Rails siguiendo estas instrucciones. Generé un nuevo controlador y agregué resources :tickets al archivo de rutas.

Hexapoda::Application.routes.draw do
  resources :tickets
end

Este es el controlador (`/app/controllers/tickets_controller.rb').

class TicketsController < ApplicationController
  def index
    @tickets = Ticket.all
  end
end

Luego agregué un nuevo modelo. Ticket in /app/models/ticket.rb.

class Ticket
  include MongoMapper::Document

  key :summary, String, :required => true
end

Aquí está la vista (/app/views/index.html.erb):

<h1>Tickets#index</h1>
<p>Find me in app/views/tickets/index.html.erb</p>

Ahora cuando voy a /tickets en mi navegador, aparece un mensaje de error.

NoMethodError en TicketsController#index

método indefinido `clave? ' para nulo: NilClass

No tengo idea de lo que está pasando. ¿Cual podría ser el problema? Estoy usando Rails 3.2.5 y MongoMapper 0.11.1.

preguntado el 12 de junio de 12 a las 17:06

@Andrew Marshall fue un encabezado a propósito. Así es como lo representa la página de error. -

No es necesario que sea uno gigante (que distraiga)… puedes usar múltiples #s para hacer un encabezado más pequeño. -

Pero que sea un encabezado no es realmente relevante. ¿Qué hay en su plantilla de índice? -

Además, ¿es ese realmente su código TicketsController#index? ¿O excluiste algún código? -

Este es realmente mi código. Agregué la vista a la pregunta. -

3 Respuestas

Necesitas el último MonoMapper de Master:

gem 'mongo_mapper', github: "jnunemaker/mongomapper"

Y correr bundle

Explicación: Rails 3.2.4 agregó un método de atributos accesibles a ActiveModel, pero MongoMapper ya tenía esto; así que se golpeaban entre ellos.

Problema de MM: Problema 419
Compromiso de MM que corrige: 4d35c67

Respondido el 12 de junio de 12 a las 17:06

La solución de Jesse Wolgamott arriba de mí debería funcionar, si no es así, es posible que tenga algo más mal que es muy simple.

Para mí, este error:

método indefinido `clave? ' para nulo: NilClass

sucedió porque un archivo de modelo que el controlador estaba llamando y mostrando en la vista tenía un error tipográfico simple. Asegúrese de que cuando utilice attr_accesible que no olvides ninguna de las comas entre las cosas. Mi problema provino de tener nuevos caracteres de línea como este:

attr_accessible :dirección_1, :dirección_2, :ciudad <= COMA NECESARIA :país, :latitud, :longitud, :estado, :zip

Asegúrese de hacer lo que Jesse Wolgamott dijo que hiciera y si eso no funciona o si ya está ejecutando esa versión, verifique los archivos de su modelo en busca de errores tipográficos.

Respondido el 13 de junio de 12 a las 21:06

Esto me estaba dando un poco de dolor de cabeza. No tengo instalada la gema mongo_mapper, pero reiniciar el servidor de Rails me solucionó el problema.

Respondido 16 Oct 12, 01:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.