关于rails的Sqlite问题

时间:2010-08-04 21:05:58

标签: ruby-on-rails sqlite activerecord migration

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

首先我建立我的脚手架, 添加对迁移文件的引用, 将belongs_to has_many添加到模型中 比使用基本的rake db:migrate命令启动我的数据库和runinig。

然后它不起作用, 我想有一个我想不通的缺失步骤:S

顺便说一句,我试图在构建动态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

1 个答案:

答案 0 :(得分:0)

此行发生错误:

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

  

ActiveRecord :: RecordNotFound in   GenresController #show无法找到   ID =故事

的流派

这意味着params[:id]的值为“tales”,这是错误的。我在这里猜测,但我打赌在表格或其他地方的某个地方试图在/genre/tales而不是/tales/genre/:id上进行GET(其中:id应该是一个整数)。我也猜测你在routes.rb中有一个映射:

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

我没有你正在关注的那本书的副本。