未定义的方法`key?' for nil:使用MongoMapper时的NilClass

3 ruby ruby-on-rails mongomapper

我按照这些说明设置了一个新的Rails应用程序.我生成了一个新的控制器并添加resources :tickets到routes文件中.

Hexapoda::Application.routes.draw do
  resources :tickets
end
Run Code Online (Sandbox Code Playgroud)

这是控制器(`/app/controllers/tickets_controller.rb').

class TicketsController < ApplicationController
  def index
    @tickets = Ticket.all
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个新的模式Ticket/app/models/ticket.rb.

class Ticket
  include MongoMapper::Document

  key :summary, String, :required => true
end
Run Code Online (Sandbox Code Playgroud)

这是视图(/app/views/index.html.erb):

<h1>Tickets#index</h1>
<p>Find me in app/views/tickets/index.html.erb</p>
Run Code Online (Sandbox Code Playgroud)

现在,当我进入/tickets浏览器时,收到错误消息.

TicketsController #index中的NoMethodError

未定义的方法`key?' 为零:NilClass

我不知道是怎么回事.可能是什么问题呢?我正在使用Rails 3.2.5和MongoMapper 0.11.1.

Jes*_*ott 6

你需要Master的最新MonoMapper:

gem 'mongo_mapper', github: "jnunemaker/mongomapper"
Run Code Online (Sandbox Code Playgroud)

并运行 bundle

说明:Rails 3.2.4为ActiveModel添加了一个accessible_attributes方法,但MongoMapper已经有了这个; 所以他们互相辱骂.

MM问题:问题419
MM提交修复:4d35c67