문제

나는 내 웹 사이트에 URL /유사한-제품 (제품이 동적 인 경우)을 만들기 위해 loures.rb를 사용하려고 노력하고 있습니다. 문제는 routes.rb와 같은 URL을 쉽게 지원하지만 제품은 제품이 필요하지만 전자를 지원하지 않기 때문에 분리기가 필요하기 때문에 전자를 지원하지 않습니다 ( ' /'는 분리기이지만 '-'는 그렇지 않음). 분리기 목록은 ActionController :: 라우팅 :: 분리기입니다.

'-'는 분리기로 추가 할 수 없습니다 : 제품에는 하이픈도 포함 할 수 있습니다. 이와 같은 URL을 지원하는 가장 좋은 방법은 무엇입니까?

내가 성공적으로 시도한 한 가지 방법은 lours.rb를 사용하지 않고 컨트롤러 자체에 URL 구문 분석 로직을 넣는 것입니다. 그러나 가장 깨끗한 방법은 아닙니다.

도움이 되었습니까?

해결책

실제로 추가 할 수 있습니다 - 분리기로서 Route Globbing을 사용하십시오.

map.similar_product '/similar-to-*product', :controller => 'products', :action => 'similar'

그런 다음 ProductsController#에서 유사합니다

@product = Product.find_by_slug params[:product].join('-')

리팩토링은 더 멋지게 보이지만,이 접근법을 사용하면 하이픈을 포함 할 수있는 모든 슬러그를 특별히 처리해야합니다.

다른 팁

나는 당신의 URL을 단순히 "유사한/제품"하도록 당신의 URL을 리팩토링 할 것입니다.

쉬운 솔루션은 a를 사용하는 것입니다 라우팅 필터. 자세한 내용은 readme를 참조하십시오.

라우팅 필터를 사용하면 URL을 가질 수 있습니다 /similar-to-:product, 전처리 /similar-to/:product 라우팅 인식에 도달하기 전에. 또한 후 프로세스 생성 경로를 후퇴하고 싶을 것입니다 /similar-to/:product 에게 /similat-to-:product.

나는 약간 혼란 스럽지만 분리기로 "To-"를 추가 할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top