2012-10-03 4 views
0
우리는 두 가지 모델 우리가 같은 경로를 실행하려면, 지역과 상점, 한

: 우리는 무엇을하고 싶은 것은 통과레일 3.1 여러 컨트롤러

입니다 www.mysite.com/the_name_of_the_thing_here 영역 테이블을 사용하여 영역 페이지를 표시하고, 일치하는 항목이없는 경우 저장소 테이블을 통해 저장소 페이지를 표시합니다. 우리는이 로직을 어디에 두어야하는지 (지역 컨트롤러에서?)와 컨트롤러를 전환하는 방법을 잘 모릅니다. 어떤 아이디어?

감사

답변

1

당신은 당신이 변수를 정의하는 다른 컨트롤러 메소드 할 내용을 변경하려는 경우

@area = Area.find_by_name(params[:name]) 
@store = Store.find_by_name(params[:name]) 
if @area 
    redirect_to area_path(@area) 
elsif @store 
    redirect_to store_path(@store) 
else 
    redirect_to help_url 
end 

같은 컨트롤러 그것에 대해 행동, 뭔가를 사용할 수 있다고 생각 :

@thing = Area.find_by_name(params[:name]) || Store.find_by_name(params[:name]) 

및보기로 전달

<%= thing.name %> 
+0

안녕하세요. 알렉스, 고마워. 한 가지 질문 : 경로가 동일하기 때문에 루프에서 끝나지 않습니까? – user1051849

+0

업데이트를 참조하십시오 .... – alex

+0

안녕하세요. 안타깝게도 앱에서 각 모델의 다른 경로로 리디렉션해야합니다. 리디렉션없이이 작업을 수행하고 싶습니다 ... 첫 번째 모델에 대해 "the_name_of_the_thing_here"를 확인한 다음 일치하는 항목이있을 경우 해당 모델의보기를 제공하거나 일치하는 항목이 두 번째 모델 인 경우 두 번째 모델의보기를 제공해야합니다. – user1051849