2010-12-03 3 views
0

는 단순히Ruby 코드 ... 또는 Rails 경로에 오류가 있습니까?

오류 브라우저에서 ... 루비/레일에 비교적 새로운 해요 및 case/when 절 또는 아마도 내가 이해하고 있지 않다 경로의 구조를 망쳐있다 : No route matches {:action=>"show", :controller=>"masters"}

하지만 분명히보고 rake routes에서 나는 참조 :

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

모두 (masters & breeders를) 컨트롤러 show 방법 ...

작업 한

어디가 어때?

#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 

편집 : 추가 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

MastersController를 (를) 보여줄 수 있습니까? –

+0

확인. 그것은 꽤 보일러이지만 나는 그것을 추가했습니다. – Meltemi

+0

오류가 발생하는 정확한 단계를 설명하십시오. –

답변

1

하! 그것을 발견! 내 리디렉션이 잘못되었습니다 ... redirect_to @parent 대신에 parent_path(@parent)을 생성해야했습니다 ...

+1

해결책을 찾은 경우 대답을 수락대로 표시하십시오. 잘 했어! –

+0

예. 만약 내가 * 할 수있다. 그래서 이틀 동안 내 * 자신의 대답을 받아들이지 않을 것입니다. 그러니 계속 나아가서 당신 자신의 대답이되고 * 어쩌면 * 내가 가진 것보다 더 흥미로운다면 그것을 받아 들일 것입니다 .. . – Meltemi