3

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

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

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

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

然后我Ticket/app/models/ticket.rb.

class Ticket
  include MongoMapper::Document

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

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

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

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

TicketsController#index 中的 NoMethodError

未定义的方法“键?” 对于零:NilClass

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

4

3 回答 3

6

您需要 Master 提供的最新 MonoMapper:

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

并运行bundle

说明:Rails 3.2.4 为 ActiveModel 添加了 access_attributes 方法,但 MongoMapper 已经有了这个;所以他们互相殴打。

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

于 2012-06-12T16:54:35.303 回答
2

我上面的 Jesse Wolgamott 解决方案应该可以工作,如果没有,你可能还有其他非常简单的错误。

对我来说,这个错误:

未定义的方法“键?” 对于零:NilClass

发生是因为控制器正在调用并在视图中显示的模型文件中有一个简单的错字。确保在使用attr_accessible时不要忘记事物之间的任何逗号。我的问题来自使用这样的换行符:

attr_accessible :address_1, :address_2, :city <= 需要逗号 :country, :latitude, :longitude, :state, :zip

一定要按照我上面的 Jesse Wolgamott 说的去做,如果这不起作用或者你已经在运行那个版本,请检查你的模型文件是否有错别字。

于 2012-06-13T19:21:11.133 回答
0

这让我有点头疼。我没有安装 mongo_mapper gem,但是重新启动 rails 服务器为我解决了这个问题。

于 2012-10-16T00:12:57.947 回答