2010-08-04 71 views
0

我在rails上使用sqlite3时遇到关系问题。Sqlite on rails与关系问题

首先,我建我的支架, 的引用添加到迁移文件, belongs_to的的has_many添加到模型 不是让我的数据库,并与基本耙分贝runinig:迁移命令。

然后它不工作, 我想有一个丢失的步骤,我想不通:S

通过我正在tryng实施与构建动态的Web 2.0 网站的例子talewiki方式Ruby on Rails,我在第75页。 这个例子在mysql上。

class GenresController < ApplicationController 
    # GET /genres 
    # GET /genres.xml 
    def index 
    @genres = Genre.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @genres } 
    end 
    end 

    # GET /genres/1 
    # GET /genres/1.xml 
    def show 
    @genre = Genre.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @genre } 
    end 
    end 

    # GET /genres/new 
    # GET /genres/new.xml 
    def new 
    @genre = Genre.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @genre } 
    end 
    end 

    # GET /genres/1/edit 
    def edit 
    @genre = Genre.find(params[:id]) 
    end 

    # POST /genres 
    # POST /genres.xml 
    def create 
    @genre = Genre.new(params[:genre]) 

    respond_to do |format| 
     if @genre.save 
     format.html { redirect_to(@genre, :notice => 'Genre was successfully created.') } 
     format.xml { render :xml => @genre, :status => :created, :location => @genre } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @genre.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /genres/1 
    # PUT /genres/1.xml 
    def update 
    @genre = Genre.find(params[:id]) 

    respond_to do |format| 
     if @genre.update_attributes(params[:genre]) 
     format.html { redirect_to(@genre, :notice => 'Genre was successfully updated.') } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @genre.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /genres/1 
    # DELETE /genres/1.xml 
    def destroy 
    @genre = Genre.find(params[:id]) 
    @genre.destroy 

    respond_to do |format| 
     format.html { redirect_to(genres_url) } 
     format.xml { head :ok } 
    end 
    end 
end 
+0

究竟什么不行?你看到什么错误或行为? – bjg 2010-08-04 21:08:47

+0

GenresController中的ActiveRecord :: RecordNotFound#show 找不到具有ID =故事的流派 – gkaykck 2010-08-04 21:20:00

+0

您能否在该控制器中显示“show”动作的代码片段?看起来它可能使用了错误的一种关键的取景 – bjg 2010-08-04 21:37:50

回答

0

的错误发生在这条线:

@genre = Genre.find(params[:id]) 

的ActiveRecord :: RecordNotFound在 GenresController#显示找不到 类型与ID =故事

那我那params[:id]有价值“故事”这是错误的。我在这里猜测,但我敢打赌,在形式或其他地方的某个地方有一个尝试在/genre/tales上执行GET而不是/tales/genre/:id(其中:id应该是整数)。我也猜你在routes.rb有一个这样的映射:

map.resources :tales, :has_many => :genres 

我不知道你在下面这本书的副本。