2010-08-04 5 views
0

J'ai un problème avec les relations en utilisant sqlite3 sur les rails.Sqlite sur les rails problème avec les relations

d'abord, je bâtirai mon échafauds, ajouter les références aux fichiers de migration, ajouter belongs_to has_many aux modèles que obtenir ma base de données et runinig avec le râteau de base db: commande migrer.

Et puis il ne fonctionne pas, Je crois qu'il ya une étape manquante que je ne peux pas comprendre: S

Par la façon dont je suis tryng à mettre en œuvre l'exemple talewiki sur instrument dynamique Web 2.0 Sites Web avec Ruby on Rails, je suis à la page 75. L'exemple est sur 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

Qu'est-ce qui ne fonctionne pas exactement? Quelle erreur ou quel comportement voyez-vous? – bjg

+0

ActiveRecord :: RecordNotFound dans GenresController # show Impossible de trouver Genre avec ID = contes – gkaykck

+0

Pouvez-vous montrer le fragment de code pour l'action 'show' dans ce contrôleur? On dirait qu'il utilise peut-être le mauvais type de clé dans le viseur – bjg

Répondre

0

L'erreur se produit sur cette ligne:

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

donnant

ActiveRecord :: RecordNotFound dans GenresController # show Impossible de trouver Genre avec ID = contes

Que me et que params[:id] a la valeur "contes" qui est faux. Je devine ici, mais je parie que quelque part dans la forme ou ailleurs il y a une tentative de faire un GET sur /genre/tales au lieu de /tales/genre/:id (où: id devrait être un nombre entier). Je devine que vous avez aussi un mapping routes.rb comme:

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

Je n'ai pas une copie du livre que vous suivez.

Questions connexes