2011-07-01 2 views
42

Ruby on Rails 3.0.7을 사용하고 있으며 부분 템플릿을 사용할 계획입니다. 내 응용 프로그램의 모든 클래스는 동일한 부분을 사용하므로 모든 요소를 ​​배치 할 위치를 결정해야합니다."글로벌"공유 부분 템플릿을 어느 폴더에 넣어야합니까?

"글로벌"공유 부분 템플릿을 lib 폴더에 두는 것이 좋은 생각입니까? 아니요, 폴더를 선택하는 일반적인 방법은 무엇입니까? 해당 폴더의 이름을 올바르게 지정하고로드하는 방법에 대한 조언이 있습니까?

답변

53

당신이 "목록에서 행"표준이있는 경우 app/views/shared에 모든 공유 파셜을 배치하고,

render :partial => 'shared/partial_name' 

로를 참조하는 표준 부분 (예를 들어, 인덱스 페이지), 당신은을 사용할 수 있습니다 부분 등의 공유 :

# To render a single object row: 
render :partial => 'shared/item', :locals => { :item => @item } 
# Or to render them all: 
render :partial => 'shared/item', :collection => @items 
+4

에서 찍은 여전히 ​​레일 4 정확합니까? –

+0

@JamesMcMahon 예, 레일 4와 함께 작동합니다. – jlhonora

+0

레일 5는 무엇입니까?, 레일 5에 더 좋은 방법이 있거나 동일한 것을 사용하는 것입니다. –

4

규칙은 당신이 많은 부분 지문을 위하여려고하는 경우에 app/views/shared

아래에 넣어하는 것입니다, 난 당신을 권 해드립니다 하나의 디렉토리에 많은 부분을 갖는 것이 일반적으로 좋은 습관이 아니기 때문에, 그 디렉토리의 하위 디렉토리에 애플리케이션을 이해하는 것이 중요합니다.

15

레일 4 :

render partial: 'partial_name', variable_name: variable 

추가 혜택은 다음과 같습니다

은 파셜 당신이 그런 어디서나 쉽게 할 수있는 응용 프로그램에서 /app/views/application

에서 응용 프로그램에서를 통해 사용하려는 넣어 /app/views/controller_name/_partial_name.html.erb에서 부분적인 의미가 무엇인지 다시 정의하여 특정보기 공간에서 부분을 재정의 할 수 있으며 부분보기를 호출하면 참조 할 수 있습니다. 더 구체적인 컨텍스트가 존재합니다. 존재하지 않으면 응용 프로그램 수준이 부분적으로됩니다.

제안이 Thoughtbot

+0

네임 스페이스 컨트롤러를 사용할 때는 작동하지 않습니다. 그런 다음 파일이 'app/views/NAMESPACE/application'에있을 것으로 예상하고, 비 네임 스페이스로 대체하지 않습니다. –

+0

두 번째 평가에서; 이 문제는 내 사양을 실행할 때만 발생하지만 응용 프로그램을 사용할 때 발생하지는 않습니다. –

관련 문제