私はRailsとMongoDBにとって完全にニュースです。私は良い本のチュートリアルに従っていて、軽いTwitterコピーを使って最初のRailsアプリを作成しています。すべてが順調に進みました。
しかし、学習プロセスの一環として、デフォルトのSGBDではなくMongoDBを使用して同じアプリを構築したいと思いました。
したがって、mongoを構成し、mongo_mappergemをインストールしました。このチュートリアルに従って、すべてが適切に構成されています:http ://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started 。次に、-orm not selectedエラーをスローせずに、Railsが生成できるようにするために少し苦労しました。これを乗り越えるには、rails3-generators gemを追加し、それをGemfileに追加する必要がありました。
これがすべて完了すると、すべてが正常に機能しました。Railsサーバーを正常に起動できました。
生成のおかげでユーザーコントローラーを追加しました。このページは正常に機能し、以前に追加したユーザーも一覧表示されます。
ただし、表示、編集、削除などの他のすべてのアクションは機能していません(作業を作成していますが、表示されてエラーが発生します)。
これは、すべての異なるアクションで実質的に同じエラーです。
私がすぐに気付くことができる1つの違いは、MongoDB以外のデータベースでは、ユーザーのIDは1から始まっていたということです。しかし、ここではMongoDBでは、ランダムに生成されたIDのように見えますが、これははるかに複雑で、そうではありません。タイプintの:4d2ae91d4403baa84a000002
すべてのアクションがIDをパラメーターとして使用しているため、これが問題を引き起こしている可能性があると考えています...しかし、これを修正する方法がわかりません。私はルビーで生成されたコードを見てきましたが、それは私には問題ないように見えます(デフォルトのデータベース用に生成されたコードと非常に似ています)。
どんな助けでも大歓迎です!mongodbを使用して単純な生成コードを解決せずに、プロジェクトを進める方法がわかりません。
ありがとう、
アレックス
ps:このコードはまったく書かなかったのでお願いします。すべてが生成されたので、最初から作業することを期待していました...
ここで尋ねられるのは、users_controllersのコードです。
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