Ruby on rails 使用ORM mangomapper生成的Rails代码抛出NoMethodError(对于“4D2EA4403BAA84A000005”的未定义方法“each'”:String)
我绝对是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解决一个简单的生成代码,我不知道如何继续我的项目 谢谢 亚历克斯 附言: 请注意,我根本没有写这些代码。一切都已经产生,这就是为什么我希望从一开始就工作 如所问,以下是用户和控制器的代码: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并将
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])