2012-07-29 3 views
0

가입하는 동안 선택한 스포츠에 따라 사용자를 다른 카테고리로 구분하는 페이지를 만들려고합니다. 나는 현재 두 개의 다른 부분으로 그것을하려고 노력 중이다. 내가 겪고있는 문제는 동일한 모델을 두 개의 개별 부분으로 사용할 수 없다는 것입니다. 어떻게하면 좋을까요?여러 부분을 동일한 모델로 사용하는 방법

+0

우리가 당신에게 당신이 잘못하고있는 것을 말할 수있는 당신의 코드를 보여 주면. – Mischa

답변

1

흠. 부분은 여러 개의 작은 파일에서 html.erb 코드를 분할하고 다양한보기 사이에서 html.erb 코드를 재사용하는 방법 일뿐입니다.

분리보기를 하나의보기로 만들고 레일을 처음 사용하는 경우 두 가지 범주 (아마도 두 범주 만 가능)가 될 때까지 부분 분석없이 시도 할 것입니다.

그런 다음 반복 코드를 부분 코드로 분해하여 다시 사용할 수 있습니다. 물론 모든 모델을 사용할 수 있습니다. 어쩌면 매개 변수를 부분으로 전달할 가능성을 알지 못했을 것입니다. 마찬가지로, @feed_item는 변수 제어기 (또는 다른 변수)

<%= render 'shared/feed_item_raw', feed_item: @feed_item %> 

의해 설정된 경우 그 부분은 단순히 feed_item

+0

먼저 Michael Hartl 's rails 튜토리얼에서 샘플 앱을 수정하려고합니다. 문제는 두 부분으로 동일한 모델 정보를 사용할 수 없다는 것입니다. "정의되지 않은 지역 변수 또는 메소드'user '"오류가 발생합니다. 부분적으로 또는 부분적으로보기가 모델을 상속받지 않는 – rockyroadster555

+0

에 있던 폴더의 모델을 부분적으로 자동으로 상속 받았다고 생각했습니다. 뷰에서 모든 컨트롤러 인스턴스 변수를 사용할 수 있습니다. 부분에 대해서는 위의 대답에서 언급 한 변수를 전달할 수 있습니다. 모델에 대한 액세스가 필요한 경우 수행해야 할 작업입니다. – bento

0

사용이 그것을 참조로 :

render :partial => 'partial_path', :locals => {:user => your_user_object} 
0

을 나는 하나의 모델, 클라이언트, 다른 상태가 있습니다. 나는 같은 페이지들은 뷰의 각각의 부분으로 이동

<%= render(partial: "active_clients", collection:@active_clients) || "No active clients yet." %> 
    <%= render(partial: "inactive_clients", collection:@unactive_clients) || "No inactive clients yet." %> 

의 다른 부분을 렌더링 할 필요가 있었다.

다음 내보기/클라이언트 폴더에서 각 부분이 약간 다르기 때문에 두 개의 다른 부분을 만들었습니다. 그 부분 지문의

_active_clients.html.erb 
_inactive_clients.html.erb 

일이 내부 같습니다

<li> 
     <input class="checkbox" checked="checked" type="checkbox"/> 
     <%= link_to "#{active_clients.firstname} #{active_clients.lastname}", dashboard_path %> 
    </li> 

이없는 부분 다른 체크 박스에 "확인"를. 그것은 유일한 차이점입니다.

내 clients_controller 인덱스 작업에

I는 다음과 같이 두 개의 배열을 구분했습니다

def index 
    @active_clients = current_trainer.active_clients 
    @inactive_clients = current_trainer.inactive_clients 
end 

마지막 조각 트레이너 모델 안에 ...이에 대한 매력처럼 작동

def active_clients 
    self.clients.where(status: true) 
end 

def inactive_clients 
    self.clients.where(status: false) 
end  

나를. 나는 그것이 도움이 되길 바랍니다. ...

관련 문제