为什么我在AppFog上使用rails应用程序获取NoMethodError?

时间:2013-04-03 21:32:21

标签: ruby-on-rails mongodb mongomapper appfog

我在AppFog上有一个rails应用程序,连接到一个mongo数据库。这是一个非常简单的数据库,我使用mongo_mapper gem创建MVC内容,然后没有修改它。

rails g scaffold Contacts name:string address:string email:string phone:string -orm mongo_mapper

非常基本!只是试图将mongo作为数据库进行测试。

我按照说明与数据库here交谈。

但是,每次尝试访问/contacts路径时,都会收到“500 Internal Server Error”消息。

AppFog记录我的应用报告:

Started GET "/contacts" for 50.193.89.38 at 2013-04-03 21:18:58 +0000
Processing by ContactsController#index as HTML
Completed 500 Internal Server Error in 0ms

NoMethodError (undefined method `collection' for nil:NilClass):
  app/controllers/contacts_controller.rb:5:in `index'

我的联系人控制器文件的第一个块:

class ContactsController < ApplicationController
  # GET /contacts
  # GET /contacts.json
  def index
    @contacts = Contact.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @contacts }
    end
  end
....

任何帮助都会很棒。

== UPDATE ==

$ rails console
irb(main):001:0> Contact.all
=> []

使用rails s工作正常,我根本没有得到500错误。

1 个答案:

答案 0 :(得分:0)

模型的名称应该是单数,即Contact而不是Contacts

rails g scaffold Contact name:string address:string email:string phone:string -orm mongo_mapper

您创建的方式使模型的名称为Contacts而不是Contact。因此,当您尝试Contact.all时,您会获得nil