Ruby on rails 使用ORM mangomapper生成的Rails代码抛出NoMethodError(对于“4D2EA4403BAA84A000005”的未定义方法“each'”:String)

Ruby on rails 使用ORM mangomapper生成的Rails代码抛出NoMethodError(对于“4D2EA4403BAA84A000005”的未定义方法“each'”:String),ruby-on-rails,mongodb,mongomapper,mongodb-ruby,Ruby On Rails,Mongodb,Mongomapper,Mongodb Ruby,我绝对是Rails和MongoDB的新闻。我一直在遵循一本好书中的教程,并用一个轻量级的Twitter副本创建了我的第一个Rails应用程序。一切都很顺利 但作为我学习过程的一部分,我希望使用MongoDB而不是默认的SGBD构建相同的应用程序 因此,我配置了mongo并安装了mongo_映射器gem。已按照本教程正确配置了所有内容:。然后,我努力让Rails generate在不抛出--orm not specified错误的情况下工作。为了克服这个问题,我必须添加rails3生成器gem并将

我绝对是Rails和MongoDB的新闻。我一直在遵循一本好书中的教程,并用一个轻量级的Twitter副本创建了我的第一个Rails应用程序。一切都很顺利

但作为我学习过程的一部分,我希望使用MongoDB而不是默认的SGBD构建相同的应用程序

因此,我配置了mongo并安装了mongo_映射器gem。已按照本教程正确配置了所有内容:。然后,我努力让Rails generate在不抛出--orm not specified错误的情况下工作。为了克服这个问题,我必须添加rails3生成器gem并将其添加到gem文件中

一旦所有这些都完成了,一切都很顺利。我成功地启动了Rails服务器

由于generate,我添加了一个用户控制器。该页面运行良好,甚至列出了我以前添加的用户:

但是,所有其他操作(显示、编辑、删除等)均不起作用(创建作品,但随后转到“显示”并出现错误):

对于所有不同的操作,实际上都是相同的错误

我可以马上注意到的一个区别是,对于非MongoDB,用户的id从1开始,等等。但是对于MongoDB,它看起来像是一个随机生成的id,更复杂,并且不是int类型:4d2ae91d4403baa84a000002

我认为这可能会产生问题,因为所有操作都使用id作为参数。。。但我不知道如何解决这个问题。我已经看过ruby生成的代码,它看起来很好(与为默认db生成的代码非常相似)

任何帮助都将不胜感激!如果不使用mongodb解决一个简单的生成代码,我不知道如何继续我的项目

谢谢

亚历克斯

附言: 请注意,我根本没有写这些代码。一切都已经产生,这就是为什么我希望从一开始就工作

如所问,以下是用户和控制器的代码:

class UsersController < ApplicationController
  # GET /users
  # GET /users.xml
  def index
    @users = User.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @users }
    end
  end

  # GET /users/1
  # GET /users/1.xml
  def show
@user = User.first(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @user }
end
  end

  # GET /users/new
  # GET /users/new.xml
  def new
@user = User.new

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @user }
end
  end

# GET /users/1/edit
  def edit
@user = User.first(params[:id])
  end

  # POST /users
  # POST /users.xml
  def create
    @user = User.new(params[:user])

respond_to do |format|
  if @user.save
    format.html { redirect_to(@user, :notice => 'User was successfully created.') }
    format.xml  { render :xml => @user, :status => :created, :location => @user }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
  end
end
end

  # PUT /users/1
  # PUT /users/1.xml
  def update
@user = User.first(params[:id])

respond_to do |format|
  if @user.update(params[:user])
    format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
  end
end
  end

  # DELETE /users/1
  # DELETE /users/1.xml
  def destroy
@user = User.first(params[:id])
@user.destroy

respond_to do |format|
  format.html { redirect_to(users_url) }
  format.xml  { head :ok }
end
  end
end
class UsersController@users}
结束
结束
#获取/users/1
#GET/users/1.xml
def秀
@user=user.first(参数[:id])
回应待办事项|格式|
format.html#show.html.erb
format.xml{render:xml=>@user}
结束
结束
#获取/用户/新建
#GET/users/new.xml
def新
@user=user.new
回应待办事项|格式|
format.html#new.html.erb
format.xml{render:xml=>@user}
结束
结束
#获取/用户/1/编辑
定义编辑
@user=user.first(参数[:id])
结束
#帖子/用户
#POST/users.xml
def创建
@user=user.new(参数[:user])
回应待办事项|格式|
如果@user.save
format.html{redirect_to(@user,:notice=>“用户已成功创建”)}
format.xml{render:xml=>@user,:status=>:created,:location=>@user}
其他的
format.html{render:action=>“new”}
format.xml{render:xml=>@user.errors,:status=>:unprocessable_entity}
结束
结束
结束
#PUT/users/1
#PUT/users/1.xml
def更新
@user=user.first(参数[:id])
回应待办事项|格式|
如果@user.update(参数[:user])
format.html{redirect_to(@user,:notice=>“用户已成功更新”)}
format.xml{head:ok}
其他的
format.html{render:action=>“edit”}
format.xml{render:xml=>@user.errors,:status=>:unprocessable_entity}
结束
结束
结束
#删除/users/1
#删除/users/1.xml
def销毁
@user=user.first(参数[:id])
@用户破坏
回应待办事项|格式|
format.html{重定向到(用户url)}
format.xml{head:ok}
结束
结束
结束

嗯,看来我找到了

我替换了:

@user = User.first(params[:id])

但同样,这段代码是生成的。。。那么错误来自哪里呢?rails3发电机中是否存在“缺陷”?还是我搞砸了这一代人


Alex

请给我们看一下
users\u controller.rb的第16行。是的,这是rails3生成器中的一个bug。我已经提交了申请。
@user = User.find(params[:id])