2014-11-30 2 views
0

내 코드를 리팩터링합니다. 주로 부분을 렌더링하기위한 다양한 장소에서 else 문을 많이 사용했습니다. 그래서 아래 코드를 사용했습니다. 코드는 작동하지만 partial을 사용할 수없는 일부 계정 유형의 경우 오류가 발생합니다.redering 빈 부분을 사용할 수없는 경우

'nil'은 유효한 부분 경로를 반환하는 ActiveModel 호환 객체가 아닙니다.

- account_type = 'Analyst' #it could be analyst/role/admin 
:partial => "control-panel/add-#{account_type}" 

부분이 지정된 디렉토리에서 사용할 수없는 경우 빈 부분 렌더링하는 방법이 있나요.

답변

1

간단히과 같이 해시에 넣어 수의 당신이 다음 'Analyst''Admin'에 대한 부분 지문을 만든 가정 해 봅시다 :

- account_type_partials = { 'Analyst' => 'analyst', 'Admin' => 'admin' } 
- account_type = account_type_partials['Analyst'] 
= render :partial => "control-panel/add-#{account_type}" if account_type 

을 그러나, 나는 컨트롤러의 방법 곳으로이 두 변수를 이동하는 것이 좋습니다 것 그들은 재사용 할 수 있습니다

def account_type_partials 
    { 'Analyst' => 'analyst', 'Admin' => 'admin' } 
end 

지금, 당신의 컨트롤러의 다른 방법에 :

@account_type = account_type_partials['Analyst'] # or 'Admin'/'Role' 

다음보기에서 :

= render :partial => "control-panel/add-#{@account_type}" if @account_type 
관련 문제