2016-06-18 3 views
1

내 Rails 앱에는 제품과 사용자가있는 상점이 있습니다. 두 모델 모두 모델과 컨트롤러가 있습니다. 내가 원하는 것은 그가 가지고있는 모델의 속성을 기반으로 current_user에 대한 제품을 뷰 템플릿에 표시하는 것입니다. 예를 들어, 사용자가 사용자 모델의 "여성"속성을 가지고 있고이 속성과 관련된 일부 제품을 표시하려는 경우 이것을 어떻게 할 수 있습니까?사용자 속성을 기반으로보기를 표시하는 방법은 무엇입니까?

<% @products.each do |product| %> 
     <%= render "product_row", product: product, order_item: @order_item %> 
    <% end %> 

_product_row.html.erb 당신은 사용자 모델을 저장하는 방법

<h4><%= product.name %></small></h4> 
    <div class="image"> 
    <%= image_tag product.image.url(:original), class: "img-responsive" %></div> 

    <p>Some description.</p> 

    <a href="/bag/<%= product.id %>", class="add-to-cart">Add to Package</a> 

답변

1

제품 클래스에서 객체를 검색해야하는 것처럼 들립니다 User 클래스의 속성을 기반으로합니다. 사용자의 기본 서비스 개체 또는 단지 방법처럼 소리 :

class User < ActiveRecord::Base 
    def products_for_gender 
    if gender == 'female' 
     Product.where("do some logic here based on female") 
    elsif gender == 'male' 
     Product.where("do some logic here based on male") 
    else 
     #do some other logic just in case it's nil 
    end 
    end 
end 

다음 컨트롤러에 당신이 당신의보기는 다음 해당 제품 목록을 렌더링이

@products = current_user.products_for_gender 

을한다. 이것은 당신이보기에 로직을 넣지 못하도록하는데, 이것은 거의 좋은 생각이 아닙니다.

더 많은 추상화가 가능합니다. if 문이 가장 좋지는 않지만 이것은 내가 믿는 문제를 다룰 것입니다. 궁극적으로 예를 들어 서비스 객체를 사용할 수 있습니다. https://blog.engineyard.com/2014/keeping-your-rails-controllers-dry-with-services

+0

Marthyn에게 감사하십시오! "여성에 근거한 논리를 여기에 써라"는 의미는 무엇입니까? 나는 제품의 속성을 그곳에 두어야합니까? –

+0

아니야, 무슨 뜻 이냐면 제품의 어떤 속성을 기준으로 필터링하고 싶은지에 따라 내가 어떤 논리를 사용하고 있는지 모른다. 성별이 여성이면 일부 속성이 일부 값인 모든 제품을 가져옵니다. Product.where (특성 : "값"), 이것은 사용자가 결정하기위한 것이며 제품 표에 어떤 특성이 있는지 알 수 없습니다. –

+0

감사합니다. 다른 열의 여러 속성을 포함 시키려면 어떻게해야합니까? 여러 사용자 속성을 기반으로 객체를 검색하려고한다고 가정 해 봅시다. 성별뿐 아니라 다른 열에 대해서도 사용자 속성과 일치하는 항목이 모두 표시됩니까? –

0

:

이 모든 제품을 보여되어 내 제품 전망이다. devise를 사용하는 경우 뷰에서 current_user 도우미 메소드를 사용할 수 있으며이를 사용하여 curren_user.gender 속성을 가져오고이를 기반으로 뷰를 표시 할 수 있습니다.

+0

예 표준 Devise 구성을 사용하고 있습니다. 그렇지만보기에서 코드가 어떻게 보이는지 알아야합니까? –

+0

여성이 가질 수있는 제품의 종류를 결정하는 것은 당신에게 달려 있습니다. 질문에 언급하지 않은 비즈니스 논리가 더 있습니다. – Saad

+0

아래에 답변을 게시했지만 다음과 같은 질문/답변도 읽게됩니다. 도와주세요 http://stackoverflow.com/questions/60658/rails-model-view-controller-and-helper-what-goes-where?rq=1 –

관련 문제