2011-01-10 74 views
0

我絕對完全消息Rails和MongoDB中來。我一直在關注一本好書的教程,並創建我的第一個輕量級Twitter副本的Rails應用程序。一切都很順利。Rails代碼拋出NoMethodError(未定義的方法`每個」爲‘4d2aeaea4403baa84a000005’:字符串)

但正如我的學習過程的一部分,我想建立的MongoDB使用,而不是默認SGBD相同的應用程序。

我因此配置蒙戈和安裝mongo_mapper寶石。按照本教程,所有內容都已正確配置:http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started。然後我掙扎了一下,讓Rails生成工作而不會拋出--orm沒有指定的錯誤。爲了解決這個問題,我必須添加rails3-generators gem並將其添加到Gemfile中。

一旦這一切的事,一切正常。我能夠成功地啓動Rails服務器。

我添加了一個用戶控制器得益於產生。該網頁能正常工作,甚至列出了我以前添加的用戶:

alt text

但是所有其他行動,顯示,編輯,刪除等不工作(創造作品,但隨後向人展示和錯誤來):

alt text

這是幾乎所有不同的動作同樣的錯誤。

我可以注意到的一個區別是非MongoDB db,用戶的id是從1開始的,等等,但是在MongoDB中,它看起來像一個隨機生成的更復雜的id而不是int類型:4d2ae91d4403baa84a000002

我在想這可能是創建問題,因爲所有操作都使用id作爲參數......但我不知道如何解決這個問題。我看了看ruby生成的代碼,它看起來對我來說很好(非常類似於爲默認數據庫生成的代碼)。

任何幫助將不勝感激!如果沒有用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 
+0

請向我們展示`users_controller.rb`的第16行。 – 2011-01-10 12:22:31

+0

juste編輯帖子。 – Alex 2011-01-10 12:35:11

回答

1

Hummm這樣看來,我發現PB .. 。

我代替:

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

通過

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

但是,又一次,這個代碼生成了...所以錯誤來自哪裏?rails3-generators中是否有「bug」?或者不知怎的,我搞砸了這一代?

Alex

相關問題