我按照these instructions设置了一个新的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。
答案 0 :(得分:6)
你需要Master的最新MonoMapper:
gem 'mongo_mapper', github: "jnunemaker/mongomapper"
并运行bundle
说明:Rails 3.2.4为ActiveModel添加了一个accessible_attributes方法,但是MongoMapper已经有了这个;所以他们互相辱骂。
答案 1 :(得分:2)
我上面的Jesse Wolgamott解决方案应该可行,如果没有,你可能会遇到其他错误,非常简单。
对我来说,这个错误:
未定义的方法`键?'为零:NilClass
发生的原因是控制器正在调用并在视图中显示的模型文件中有一个简单的错字。确保在使用 attr_accessible 时不要忘记事物之间的任何逗号。我的问题来自使用像这样的新行字符:
attr_accessible:address_1,:address_2,:city &lt; = COMMA NEEDED :country,:latitude,:longitude,:state,:zip
请务必按照我上面所说的Jesse Wolgamott所做的事情,如果这不起作用或者您已经在运行该版本,请检查您的模型文件是否存在拼写错误。
答案 2 :(得分:0)
这让我有点头疼。我没有安装mongo_mapper gem,但重新启动rails服务器为我解决了这个问题。