2016-09-08 4 views
0

나는 3 개의 다른 부분을 가지고 있으며 정확한 제품 (또는 데이터베이스의 레코드)에 따라 다른 위치에서보기에 표시하려고합니다. 몇 가지 제품에서 3 부분 중 2 부분 만 표시하고 싶습니다. 나는 어떻게 이것을 성취 할 것인가? 감사합니다.레일 4는 데이터베이스의 변수를 기반으로 부분 렌더링합니다

+0

나는 확실하지 않다이 JS 또는 CSS 요구 또는 레일 솔루션이 있다면 난 아무것도 시도하지 않은하지만 좋은 방법을 찾고 있다면. 이것을 달성하기 위해. –

+0

정확한 제품 (또는 데이터베이스의 레코드)에 따라보기에 부분을 표시하려면 레일을 사용해야합니다. 이를 위해 제어기 메소드를 사용할 수 있습니다. – luissimo

+0

꽤 많은 조합이 있습니다. 컨트롤러 메소드는 어떻게 생겼을까요? 그냥 성명서? –

답변

2

사용자 정의 로직을 사용하여 부분을 렌더링하려는 일부 템플릿 (예 : products/show.html.erb)이 있다고 가정하면 조건부 논리를 해당 템플릿에 포함하는 것이 좋습니다. 다음은 내 생각에 많은 가정이있는 예입니다. 자세한 내용을 자유롭게 추가하고 업데이트 할 수 있습니다.

첫째, 나는 믿고있어 기본 템플릿, 당신의 show 작업입니다 :

# products/show.html.erb 

<h1>Product <%= @product.name %></h1> 
<p><%= @product.description %></p> 

<% if @product.is_fungible? %> 
    <%= render partial: 'products/fungible', locals: { product: @product } %> 
<% end %> 

<% if @product.is_edible? %> 
    <%= render partial: 'products/edible', locals: { product: @product } %> 
<% else %> 
    <%= render partial: 'products/inedible', locals: { product: @product } %> 
<% end %> 

그리고 당신의 파셜이 (그래서 같이 우리가 지역 변수로 product에 통과 한 이후, 그주의 수도, 우리는 그들에 인스턴스 변수 @product를 사용할 필요가 없습니다 :

# products/_fungible.html.erb 

<p>This product is definitely fungible, by a factor of <%= product.fungibility %>.</p> 
+0

그것이 작동하는 하나의 솔루션입니다. 또한 부분 변수를 변수로 사용하고 해당 변수를 템플릿을 참조하여 사용할 수 있음을 발견했습니다. <% render partial => product.partialone %> 예를 들어 product.partialone이 "products/edible"인 경우를들 수 있습니다. –

관련 문제