2013-06-26 1 views
0

나는 자원 경로레일 3 자원 경로에서 추가 매개 변수 제약

resources :favorites 

을하지만 내가 사용하는 경우에만 이름을 제한 할 수있는 방법

/favorites?sort_by=name 
/favorites?sort_by=date 
/favorites?sort_by=number 

같은 요청을 좋아 w'd , 날짜, 번호 요청시?

나는

resources :favorites, :constraints => {:sort_by => /name|date|number/} 

을 시도했지만 작동하지 않습니다.

미리 감사드립니다. 대신 URL : routes.rb 장소에서

+0

나는/(이름) | (날짜) | (숫자) /' – StupidDev

답변

0

경로 제약 조건이 쿼리 문자열에 대해 테스트하지 않습니다.

sort_by에서 맞춤 경로를 만들고 경로의 일부로 만듭니다. 또는 컨트롤러에서 제한하십시오.

1

다음 코드

resources :favorites do 
member do 
    get :sort_by, constraints: {id: /name|date|number/} 
end 
end 

그것은 "ID/sort_by/즐겨 찾기 /"에

sort_by_favorite GET /favorites/:id/sort_by(.:format)     favorites#sort_by {:id=>/name|date|number/} 

를 생성합니다 ID는 전달할 수 있습니다 ' 이름 또는 날짜 또는 숫자. 그러나 나는 그것이 당신이 원하는 것은 아니라고 생각합니다. 당신은 다음 URL

/favorites?sort_by=name 
/favorites?sort_by=date 
/favorites?sort_by=number 

을 원하는 경우

그래서, 그럼 당신은 즐겨 찾기 컨트롤러의 index 액션에서 어떤 조건을 작성해야합니다.

def index 
if ['name', 'date', 'number'].include?(params['sort_by']) 
    # your code goes here 
else 
    # redirect to some where with error message 
end 
end 

는 당신을 위해 작동합니다 희망 :