2010-12-03 6 views
0

Ich bin relativ neu in Ruby-/ Rails und haben die Struktur einer case/when Klausel vermasselt oder vielleicht die Routen ich ... nicht verstehenFehler in meinem Ruby Code ... oder Rails Route?

Fehler im Browser einfach: No route matches {:action=>"show", :controller=>"masters"}

aber eindeutig suchen bei rake routes ich sehe:

master GET /masters/:id(.:format) {:action=>"show", :controller=>"masters"} 
breeder GET /breeders/:id(.:format) {:action=>"show", :controller=>"breeders"} 

und beide (masters & breeders) Controller haben Arbeits show Methoden ...

Wo ist mein Gauner?

#app/controllers/dogs_controller.rb 
class DogsController < ApplicationController 

    def create 
    @parent = parent_object 
    @dog = @parent.dogs.create(params[:dog]) 
    puts parent_path 
    redirect_to parent_path(@parent) 
    end 

    def destroy 
    @parent = parent_object 
    @dog = @parent.dogs.find(params[:id]) 
    @dog.destroy 
    redirect_to parent_path(@parent) 
    end 

    private 

    def parent_object 
    case 
     when params[:master_id] then Master.find(params[:master_id]) && parent_path = master_path 
     when params[:breeder_id] then Breeder.find(params[:breeder_id]) && parent_path = breeder_path 
    end 
    end 
end 

Edit: Added MastersController

#app/controllers/masters_controller.rb 
class MastersController < ApplicationController 
    respond_to :html, :json 

    def index 
     respond_with(@masters = Master.all) 
    end 

    def show 
     respond_with(@master = Master.find(params[:id])) 
    end 

    def new 
     respond_with(@master = Master.new) 
    end 

    def edit 
     respond_with(@master = Master.find(params[:id])) 
    end 

    def create 
     @master = Master.new(params[:master]) 
     flash[:notice] = 'Master was successfully created.' if @master.save 
     respond_with(@master) 
    end 

    def update 
     @master = Master.find(params[:id]) 
     flash[:notice] = 'Master has been updated.' if @master.update_attributes(params[:master]) 
     respond_with(@master) 
    end 

    def destroy 
     @master = Master.find(params[:id]) 
     flash[:notice] = 'Successfully deleted master.' if @master.destroy 
     respond_with(@master) 
    end 
end 
+1

Können Sie den MastersController zeigen? –

+0

ok. es ist ziemlich vorbildlich, aber ich habe es hinzugefügt. – Meltemi

+0

Bitte erläutern Sie die genauen Schritte, die Sie unternehmen, um diesen Fehler zu erhalten. –

Antwort

1

Ha! Fand es! Meine Weiterleitungen waren falsch ... sollte redirect_to @parent sein anstatt zu versuchen, einige parent_path(@parent) zu konstruieren, wie ich war ...

+1

Wenn Sie die Lösung gefunden haben, können Sie Ihre Antwort als akzeptiert markieren. Gut gemacht! –

+0

ya. würde tun, wenn ich * könnte *. SO lässt mich meine * eigene * Antwort nicht für zwei (2) Tage akzeptieren ... also mach weiter und mach deine eigene Antwort und * vielleicht * ich werde es akzeptieren, wenn es interessanter ist als das, was ich bekommen habe .. . – Meltemi