저는 Rails와 MongoDB에 절대적으로 소식입니다. 좋은 책에서 튜토리얼을 따라 가볍게 트위터로 첫 번째 Rails 앱을 만들었습니다. 모든 것이 부드럽고 매끄러 웠습니다.ORM mangomapper로 생성 된 레일즈 코드는 NoMethodError ("4d2aeaea4403baa84a000005"에 대해 정의되지 않은 메소드 : String)를 던졌습니다.
그러나 학습 과정의 일환으로 기본 SGBD보다는 MongoDB를 사용하여 동일한 앱을 제작하고 싶었습니다.
따라서 mongo를 구성하고 mongo_mapper gem을 설치했습니다. 이 튜토리얼에 따라 모든 것이 올바르게 구성되었습니다 : http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started. 그런 다음 레일즈가 저를 던지지 않고 작동하도록 생성하기 위해 약간 어려움을 겪었습니다 - 지정되지 않은 오류. 이것을 극복하기 위해 레일즈 3 생성기를 추가하고 그것을 Gemfile에 추가해야했습니다.
이 모든 작업이 완료되면 모든 것이 정상적으로 작동합니다. Rails 서버를 성공적으로 시작할 수있었습니다.
생성자 덕분에 사용자 컨트롤러가 추가되었습니다. 페이지가 잘 작동하고 심지어 내가 이전에 추가 한 사용자를 나열
그러나 다른 모든 행동을 보여주는, 편집, 등, 삭제 작업을 생성 (작동하지 않는,하지만 그것은 보여 간다 그리고 오류가) 제공 :
그것은 거의 모든 다른 작업에 대해 동일한 오류입니다.
내가 방망이에서 알아 차릴 수있는 한 가지 차이점은 MongoDB가 아닌 DB를 사용하면 사용자의 ID가 1에서 시작한다는 것입니다.하지만 여기 MongoDB에서는 무작위로 생성 된 ID처럼 훨씬 더 복잡합니다. 그리고 그것은 int 타입이 아닙니다 : 4d2ae91d4403baa84a000002
모든 액션이 id를 매개 변수로 사용하고 있기 때문에 이것이 문제를 일으킬 수 있다고 생각합니다. 그러나 이것을 고치는 방법을 모릅니다. 나는 루비 생성 된 코드를 살펴 봤는데 그것은 나에게 잘 보였다 (디폴트 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
우리에게 16 개의'users_controller.rb'를 보여주십시오. –
님이 juste을 수정했습니다. – Alex