2012-09-10 2 views
3

저는 프로젝트에 해당하는 레일 모델과 컨트롤러를 가지고 있습니다. 각 프로젝트에는 여러 상태가 있습니다. 상태가 제안, 승인, 보관 처리 될 수 있다고 가정 해 보겠습니다.레일에서 비슷한 작업을 수행하는 올바른 방법

내 컨트롤러에 색인 작업이 있습니다. 그러나 앱 전체에 대한 내 견해로는 제안서, 승인 및 보관 된 프로젝트에 연결하고 해당 프로젝트 만 표시하려고합니다.

승인, 제안, 보관 등의 작업을 생성하고 일치하는 작업 만 가져올 수 있습니다.

내가 생각했던 또 다른 사항은 각 링크가 매개 변수로 변수를 전달하여 색인 작업이 수행 한 내용을 지정하는 것입니다.

이 두 가지 중 어느 것이 적절한 방법인지, 그리고/또는 레일스에서 ​​누락 된 것이 있습니까?

답변

6

필자는 params에 설정된 변수의 옵션을 선호합니다. 이렇게하면 DRY가되어 새로운 지위를 추가하는 것이 거의 어려울 것입니다. 당신은 당신이해야 할 모든 경로 정의에서 필터링을 할 수 있도록 더 상태를 추가하는 경우,

# routes.rb 

match 'projects/:filter' => 'projects#filter', :constraints => { :filter => /^approved$|^archived$|^proposal$/} 

# ProjectsController.rb 

    def filter 
    @projects = Project.where(:status => params[:filter]) 
    end 

이 방법 :을 구현하려면 다음 코드를 사용합니다.

+3

당신은 내가 한 것보다 더 좋은 질문을 읽었습니다. +1 – apneadiving

+1

저보다 더 낫습니다. 나는 그가 업데이트 작업을 요청했다고 생각했다. +1 – emrahbasman

+0

@apneadiving과 Emrah는 내가 어떤 식 으로든 그것을 더 잘 표현할 수 있었습니까? –

관련 문제