0

私は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
4

1 に答える 1

1

うーん、pbを見つけたようです...

私は置き換えました:

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

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

しかし、繰り返しますが、このコードは生成されました...では、エラーはどこから来たのでしょうか? rails3-generators に「バグ」はありますか? それともどういうわけか私は世代を台無しにしましたか?

アレックス

于 2011-01-10T13:10:05.467 に答える