2011-01-30 5 views
0

이 질문은 레일스에 대한 나의 무지와 끔찍한 검색 쿼리의 직접적인 결과입니다. 내 응용 프로그램의 모든 페이지에 정렬 가능한 표를 배치하려고합니다. 기본적으로 인벤토리 목록이 모든 곳에서 표시되어야합니다. 그러나 사용자 프로필 페이지에서 정의되지 않은 메서드 인`sort_by` 오류가 발생합니다.레일 3.0.3 임베디드 뷰

다음은 인벤토리 컨트롤러에 두 가지 헬퍼 메서드 sort_bysort_direction이있는 방법입니다.

def sortable(column, title = nil, css_class = "sort") 
    title ||= column.titleize 
    css_class = column == sort_by ? css_class + " current #{sort_direction}" : css_class 
    direction = column == sort_by && sort_direction == "asc" ? "desc" : "asc" 
    link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class} 
    end 

나는 내 문제는 내가 사용자의 컨트롤러에 sort_bysort_direction 동안 사용하고 있음을 알고 : 그럼 응용 프로그램 도우미에, 그 링크를 생성, 도우미 메서드를 가지고있다. 하지만 인벤토리 컨트롤러를 통해 어떻게 액세스 할 수 있습니까?

답변

0

두 가지 방법을 ApplicationController으로 옮기고 컨트롤러에 helper_method :sort_by, :sort_direction 행을 추가합니다. 그러면 해당 메서드가 도우미 메서드로 표시됩니다. 모든 컨트롤러는 컨트롤러를 상속하므로 모든 컨트롤러에서 모든 컨트롤러를 사용할 수 있으며 helper_method을 추가하면 모든 뷰에 해당 컨트롤러가 노출됩니다.

그렇다면 컨트롤러 작업에서 이러한 메서드를 사용하지 않는 경우 해당 메서드를 도우미로 옮기십시오.

+0

"경로 일치 없음"오류와 같이 모듈화하면 문제가 발생합니다. 왜냐하면 나는 url에 sort_by 매개 변수를 던지고 있기 때문입니다. 특히 모든 것을 application_helper로 옮겨 보았습니다. – noazark

관련 문제