2011-11-17 2 views
0

두 개의 Product Product 및 Category 모델이 있는데 각각 has_many 및 belongs_to association이 있습니다. 이제 내가하려는 것은 특정 카테고리를 클릭하면 해당 카테고리의 모든 제품이 나열되기를 원할 때입니다. 어떻게Rails 3.1.1에서 뷰에서 컨트롤러로 값을 전달하는 데 문제가 있습니다.

여기에 감사

def show_by_category 
    @products = Product.where("category_id=?", :id) 
    end 

컨트롤러

내보기

<p><%=link_to @product.category.name, show_by_category_products_path(@product.category.id)%> <%= @product.name%> <%[email protected]%><p> 

및 방법이라고합니까! (나는 그 단순한 것을 알고 있지만 때로는 장님이되어 다른 사람들의 도움을 받아야하는 간단한 방법을 볼 수 없다.)

EDIT 어쩌면 나는이 문제를 해결할 방법을 찾았다. 이

올바른 방법

에서 수행되는 경우 잘 모르겠습니다 이제 내 뷰와 모델이 올바른 방법 인 경우이

<p><%=link_to @product.category.name, show_by_category_product_path(id: @product.id)%> <%= @product.name%> 

def show_by_category 
@prod = Product.find(params[:id]) 
@products = Product.where('category_id=?', @prod.category_id) 
end 

같은 것을 말해 본다?

+0

그래서 무엇이 문제입니까? 오류가 있습니까? – pseudopeach

+0

사용자 지정 작업 ('show_by_category')에 대한 경로를 추가 했습니까? 아마도'member do; 얻으십시오 : show_by_category; 당신의'resources : products do ... end' 블록에'end'를 추가하십시오. – Frost

+0

예 경로를 추가했습니다. 나는 제품의 배열을 얻지 않는다. 그것의 nil. –

답변

1

찾기가 Category.find(params[:id]).products과 비슷해야합니다. 그러나 RESTful 라우팅 원칙을 따르고 리소스를 중첩 시키십시오. Rails는 훨씬 더 많은 일을 할 것입니다.

+0

도움이되었습니다. 감사! –

1

내가 잘못하고 있기 때문에 적어도 Getting Started 가이드를 읽을 것을 권합니다.

관련 문제