2011-03-17 4 views
9

Ruby On Rails에서 모델 속성 (page, per_page, sort_mode 등)이 아닌 URL 매개 변수는 어디에서 확인할 수 있습니까? 컨트롤러 또는 모델에서?Rails의 비 모델 매개 변수 확인 및 유효성 확인

예를 들어 더 복잡한 데이터베이스 쿼리를 수행 할 때 params를 확인하고 컨트롤러에서 기본값을 설정 한 다음 예를 들어 MyModel.search(page, per_page, order, sort_mode, query)과 같이 수행하거나 모델 내부에서 유효성 검사를 설정하고 조작되지 않은 매개 변수 MyModel.search(params)?

그리고 어떻게 그 매개 변수를 다시보기에보고합니까? 예를 들어 sort_mode 매개 변수는 정렬 방향으로보기에 작은 화살표가 있어야합니다. params 해시를 확인하고 정리하고 params에서 뷰의 데이터를 가져오나, 아니면 자체 인스턴스 변수를 사용합니까?

답변

7

컨트롤러의 매개 변수를 살균하는 경향이 있습니다.

class ApplicationController < ActionController::Base 
    before_filter :sanitise_params 

    protected 

    def sanitise_params 
    # tidy up 
    # set defaults 
    end 
end 

모델이 인터페이스를 선언하고 올바른 방법으로 컨트롤러와 통신하는 것이 좋습니다. 그렇게하면 레이어를 명확하게 분리 할 수 ​​있습니다.

보기 도우미가 도움이됩니다. ActionPack의 ActionView의 일부로 제공되는 some examples입니다. 직접 넣을 수 있습니다. app/helpers