2017-03-15 5 views
0

Spree Commerce를 사용하고 있으며 현재 백엔드에 추가 한 모든 제품이 홈페이지에 표시됩니다. 내 선택의 제품 만 FrontPage에 표시 할 수 있고 기본적으로 모든 것을 표시하지 않는 방법이 있습니까?Spree에서 선택한 제품 만 표시하는 방법은 무엇입니까?

나는 deface로 모든 것을 다듬을 수는 있지만, 내가 찾는 답이 아니라는 것을 알고있다.

감사합니다.

답변

0

얼굴이 컨트롤러가 아닌보기를 변경하는 데 사용됩니다. DB에서 가져 오는 제품은 컨트롤러 로직입니다.

많은 옵션이 있습니다. 제품 모델에 자신의 범위를 추가하고 컨트롤러를 재정 의하여 사용할 수 있지만 가장 빠른 방법은 discontinue_on입니다. 관리자가 아닌 사용자는 일반적으로 active 범위의 제품을 사용하기 때문입니다.

0

답변 찾기 : @products = @ searcher.retrieve_products를 @products = Product.joins (: variants_including_master) .where (: name => "Ruby on Rails Tote")로 변경했습니다. home_controller_decorator.rb

+0

이 해결책은 좋은 생각이 아닙니다. 주어진 이름의 제품 만 표시하도록 컨트롤러를 하드 코딩하고 있습니다 ("Ruby on Rails Tote"). 더 깨끗한 솔루션을 원한다면 컨트롤러의 기본 검색에서 모델의 일부 사용자 정의 범위를 사용하십시오. Spree는 기본적으로 ransack을 사용하여 쿼리를 생성합니다. – Argonus

0

@elliot 사실 매우 간단합니다. admin end의 제품 편집 페이지로 이동하여 해당 날짜와 현재 날짜가 같은 제품에 대해 discontinue_on을 설정하십시오. available_on이 현재 날짜보다 작고 discontinue_on이 현재 날짜보다 큰 프런트 엔드에서만 해당 제품 만 볼 수 있습니다.