UFO ET IT

Rails에서 전체 애플리케이션이 공유하는 부분을 어디에 넣을까요?

ufoet 2021. 1. 17. 11:36
반응형

Rails에서 전체 애플리케이션이 공유하는 부분을 어디에 넣을까요?


둘 이상의 모델에서 공유하는 부분 파일을 배치하려면 어디로 가야합니까? crop.html.erb한 모델에 사용되는 페이지 Photo있습니다. 이제 다른 모델 User에도 사용하고 싶습니다 .

내가 할 수 코드를 복사하여 붙여하지만 난 부분으로 이동 거라 생각 그래서, 매우 건조하지 않습니다.

두 모델간에 공유되므로 그 부분을 어디에 배치해야 합니까?

감사!


Rails 규칙은 공유 부분을 /app/views/shared.


최신 정보

레이아웃 상속은 이제 레이아웃 아래 가이드에 있으며 렌더링 템플릿 상속은 비슷하게 작동합니다.

Rails 3.1 및 다음 버전 은 템플릿 상속을 구현하므로 공유 부분의 올바른 위치는 이제 /app/views/application/라고 products#index생각합니다. 다음을 수행 할 수 있습니다.

-# products#index
= render @products.presence || 'empty'

-# /app/views/application/_empty.html.haml
There are no items

btw 그것은 application연결이 컨트롤러 상속이기 때문입니다.ProductsController < ApplicationController

이런 식으로 구현 /app/views/products/_empty.html.haml하면 위의 모든 누락 부분에 대한 폴백이며 지금은 확인할 수 없지만 템플릿 자체에 대해서도 생각합니다 ...

Railscast : 템플릿 상속!


TL; DR

Rails 3.1, Rails 4, Rails 5 및 다음에 오는 모든 것

app/views/application

컨트롤러 경로에서보기를 찾을 수없는 경우 엔진은이 경로를 자동으로 검색합니다.

Rails 3 이하

app/views/shared

엔진은이 경로를 자동으로 검색하지 않습니다.


긴 이야기

Rails 3 (및 이전 버전)에는 공유 뷰를 저장하기위한 기본 위치 없습니다 .

비공식적 인 규칙 에서 공유 뷰 저장하는 응용 프로그램 /보기 / 공유 . 그래도 저장하는 위치에 관계없이 경로를 지정해야합니다.

# render app/views/shared/menu.html.erb
<%= render :partial => "shared/menu" %> 

이 제안은 Agile Web Development with Rails에 의해 대중화되었습니다 .

Rails 3.1공유 뷰를 저장할 위치에 대한 공식 표준도입했습니다 :
app / views / application

이 표준 덕분에 엔진은 이제 app / views / application 에서 템플릿을 자동으로 찾습니다 . 결과적으로 더 이상 전체 경로를 사용할 필요가 없습니다 .

그 호기심이 따를 수 있습니다 여기에 이 결정 뒤에 생각 과정을.

이전 구문

# render app/views/application/menu.html.erb
# unless menu.html.erb is found in appp/views/my_controller
<%= render :partial => "menu" %> 

새로운 구문

# render app/views/application/menu.html.erb
# unless menu.html.erb is found in appp/views/my_controller
<%= render partial: "menu" %> 

물론 원하는 곳에 공유 뷰를 배치하고 경로별로 참조 할 수 있습니다.

<%= render :partial => "my_own_special_shared_folder/menu" %>

그래도이 작업을 수행 할 합당한 이유가 없다면 새로운 표준을 고수하고 공유 뷰를 app/views/application.


Rails Viewapp/views/layouts머리글 및 바닥 글과 같은 공유 부분을 사용 하지만 Ruby on Rails 가이드는 예제app/views/shared 에서 사용합니다 . 나는 그것이 개인적인 취향에 달려 있다고 생각합니다. 기본 탐색 또는 바닥 글과 같은 상위 수준의 항목에 사용 하지만 양식과 같은 더 좁은 컨트롤러 수준의 항목에는 사용합니다.layoutsshared


일반적으로 내 뷰에는 일반적으로 사용되는 부분이 포함 공유 폴더가 있습니다.


어디에 두든 상관 없습니다. 파일의 경로를 제공하여 임의의 위치에서 부분을 렌더링 할 수 있습니다. 파일을 render렌더링하는 컨트롤러와 연결할 필요가 없습니다. 나는 단순히 디렉토리 partials아래에서 호출되는 디렉토리를 사용하고 view다음과 같이 부분을 호출합니다.

render :partial => 'partials/mypartial'

참조 URL : https://stackoverflow.com/questions/2384631/where-to-put-partials-shared-by-the-whole-application-in-rails

반응형