我在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
答案 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
我没有你正在关注的那本书的副本。