私はRailsとMongoDBにはまったくニュースです。私は良い本からのチュートリアルに従っていて、軽いTwitterのコピーで私の最初のRailsアプリケーションを作成しています。すべてがうまく行きました。ORM mangomapperで生成されたRailsコードNoMethodError(未定義のメソッド `each 'for" 4d2aeaea4403baa84a000005 ":String)
しかし、学習プロセスの一環として、デフォルトのSGBDではなくMongoDBを使用して同じアプリを構築したいと考えていました。
したがって、mongoを設定し、mongo_mapper gemをインストールしました。このチュートリアルでは、すべてが正しく設定されています:http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started。それから、私はRailsが指定されていないエラーを投げずに動作するように少し苦労しました。これを乗り越えるために、私はレール3ジェネレータの宝石を追加し、それをGemfileに追加しなければなりませんでした。
これがすべて完了したら、すべて正常に機能しました。私はRailsサーバーを正常に起動できました。
私はgenerateのおかげでユーザーコントローラを追加しました。ページが正常に動作しても、私が以前に追加したユーザーが一覧表示されます:
をしかし、他のすべてのアクション、表示など、削除、編集が作品を作成(作業されていませんが、それは示すことを行きますそして、エラーが)来る:
それは、事実上すべての異なるアクションに対して同じエラーです。
私はバットからすぐに気づくことができる1つの違いは、非MongoDBデータベースでは、ユーザーのIDが1などから始まっていたことですが、ここではMongoDBではランダムに生成されたIDそれはint型ではありません:4d2ae91d4403baa84a000002
すべてのアクションがidをパラメータとして使用しているので、これは問題を引き起こす可能性があると考えていますが、これを修正する方法はありません。私はRubyで生成されたコードを見てきましたが、それは私にとっては大丈夫です(デフォルトのdbに対して生成されるコードと非常に似ています)。
ご協力いただければ幸いです!私は、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
私たちに 'users_controller.rb'の16行目を表示してください。 –
justeが投稿を編集しました。 – Alex