Ich bin absolut neu bei Rails und MongoDB. Ich habe Tutorials aus einem guten Buch gelesen und meine erste Rails-App mit einer leichten Twitter-Kopie erstellt. Alles lief gut und glatt.Rails-Code generiert mit ORM Mangomapper wirft NoMethodError (undefinierte Methode `each 'für" 4d2aeaea4403baa84a000005 ": String)
Aber als Teil meines Lernprozesses wollte ich die gleiche App mit MongoDB anstatt der Standard-SGBD erstellen.
Ich habe daher Mongo konfiguriert und den mongo_mapper gem installiert. Nach diesem Tutorial wurde alles richtig konfiguriert: http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started. Dann habe ich ein wenig gekämpft, damit Rails generiere funktioniert, ohne mir den --orm nicht spezifizierten Fehler zuzuschieben. Um das zu überstehen, musste ich den rails3-generators gem hinzufügen und den Gemfile hinzufügen.
Sobald all dies getan wurde, hat alles gut funktioniert. Ich konnte den Rails-Server erfolgreich starten.
Ich habe einen Benutzer-Controller dank der Generierung hinzugefügt. Die Seite funktioniert gut und listet auch die Benutzer ich zuvor hinzugefügt haben:
jedoch alle anderen Aktionen, Anzeigen, Bearbeiten, Löschen usw. nicht funktionieren (Werke zu schaffen, aber dann geht es zu zeigen, und die Fehler kommt):
Es ist praktisch der gleiche Fehler für alle verschiedenen Aktionen. Der einzige Unterschied, den ich sofort feststellen kann, ist, dass mit der Nicht-MongoDB-Datenbank die IDs des Benutzers bei 1 beginnen, aber hier bei MongoDB sieht es aus wie eine zufällig generierte ID, die viel komplexer ist und das ist nicht vom Typ int: 4d2ae91d4403baa84a000002
Ich denke, dass dies die Probleme erstellen kann, da alle Aktion die ID als Parameter verwenden ... aber ich habe keine Ahnung, wie das zu beheben. Ich habe mir den Ruby-generierten Code angeschaut und er sieht in Ordnung aus (extrem ähnlich dem Code, der für die Standard-DB generiert wird).
Jede Hilfe würde sehr geschätzt werden! Ich weiß nicht, wie ich mit meinem Projekt weitermachen soll, ohne einen einfachen Generierungscode mit mongodb zu lösen.
Danke,
Alex
ps: bitte, dass ich überhaupt eine dieser Code nicht schreiben. alles erzeugt worden ist, was irgendwie ist, warum ich von der an die Arbeit gehen zu erwarten ...
wie hier gefragt ist der Code für 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
Zeigen Sie uns Zeile 16 von 'users_controller.rb' bitte. –
juste hat den Post bearbeitet. – Alex