Rails Mongoid“未定义的方法`[]'为nil:NilClass”在控制器索引上并创建

时间:2013-02-14 07:39:43

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid

我刚开始使用Mongoid for Rails并按照截屏进行操作。我已经生成了一个脚手架,生成了mongoid.yml,并且只更改了数据库名称。我也按照步骤在他们的文档中准备mongoid for rails。

但是,我似乎总是在创建动作

上得到这个
undefined method `[]' for nil:NilClass

Rails.root: /Users/ygamayatmiretuta/Documents/Dev/ruby/ta
Application Trace | Framework Trace | Full Trace

app/controllers/notes_controller.rb:25:in `create'

和索引操作中的这个:

undefined method `[]' for nil:NilClass

Extracted source (around line #12):

9:     <th></th>
10:   </tr>
11: 
12: <% @notes.each do |note| %>
13:   <tr>
14:     <td><%= note.title %></td>
15:     <td><%= note.description %></td>

我错过了配置步骤吗?谢谢!

这是控制器:

class NotesController < ApplicationController
  respond_to :html

  def index
    @notes = Note.all.entries
    respond_with @notes
  end

  def show
    @notes = Note.find params[:id]
    respond_with @notes
  end

  def new
    @notes = Note.new
    respond_with @notes
  end

  def edit
    @notes = Note.find params[:id]
    respond_with @notes
  end

  def create
    @notes = Note.create params[:notes]
    respond_with @notes
  end

  def update
    @notes = Note.find params[:id]
    @notes.update_attributes params[:notes]
    respond_with @notes
  end

  def destroy
    @notes = Note.find params[:id]
    @notes.destroy
    respond_with @notes
  end
end

3 个答案:

答案 0 :(得分:0)

这里@tasks是零。而你正试图迭代它。这就是为什么会出现这个错误。

答案 1 :(得分:0)

我更新了Ruby 1.9.3并修复了问题。

答案 2 :(得分:0)

你需要升级到Ruby 1.9.3,请参阅:

https://github.com/mongoid/mongoid/issues/2194