2014-11-08 5 views
0

레일즈 전자 상거래 사이트를 만들고 있습니다. 검색 양식을 사용하여 제목별로 제품을 검색 할 수 있지만 특정 제목이나 카테고리가있는 모든 제품을 출력하는 페이지로 어떻게 링크합니까?레일즈 제품 페이지 만들기

def index  
    if params[:search]  
    @products = Product.search(params[:search]).title 
    else  
    @products= Product.all  
    end  
end 
+0

일부 코드를 표시합니다. – Surya

답변

0

보기에 some 카테고리를 이용하여 제품을 표시하는 링크를 만들려면 :

def index 
    @products = Product.scoped 
    @products = @products.where('title like ?', "%#{params[:search]}%") if params[:search] 
    @products 
end 

및 내 가게 컨트롤러이 있습니다

내 제품 컨트롤러의 코드입니다

<%= link_to 'Some', products_path(cat: :some) %> 

컨트롤러를 다음으로 변경해야합니다.

@products = @products.where('title like ?', "%#{params[:search]}%") if params[:search] 
@products = @products.where('category like ?', "%#{params[:cat]}%") if params[:cat] 

나는 너무 많은 것을 생각하고있다.

0

제목이나 카테고리를 기준으로 제품을 필터링하려면보기에서 필터링을 설정하는 방법에 따라 크게 다릅니다. 사용자가 양식을 제출하면, 이제

<select name='title_filter'> 
    <option value="title_1">Title 1</option> 
    <option value="title_2">Title 2</option> 
</select> 

을 제목을 선택하지 : 당신은 당신이 필터링 기준으로 사용할 특정 제목에 선택 상자를 사용하는 경우, 그것은 (form 태그 내에서)보기에 같을 것이다 , "title_filter"키가 사용자가 선택한 값으로 params 해시에 추가됩니다. 당신이 링크 필터링하는 경우 당신이 LINK_TO을 사용할 수 있습니다, 또는

if params[:title_filter] 
    @products = @products.where('title= ?', params[:title_filter]) 
else 
    # fallback if no title is selected 
end 

: 당신은 당신이 지정한 것과 동일한 컨트롤러 액션을 사용할 수 있지만, 그냥 새 키를 확인했다

또한
<%= link_to 'My Title', products_path(title: :my_title) %> 

, where 절을 사용하는 방식은 위험합니다. Active Record guide

0

내보기에는 이것을 사용했다. 어떤 이유로 든 다른 대답이 작동하지 않습니다. < % = link_to "Tables", products_path (검색 : 'dining') %>