Development Tip

부분 렌더링 : 객체 대 : 지역

yourdevel 2020. 11. 11. 20:47
반응형

부분 렌더링 : 객체 대 : 지역


<%= render :partial => 'partial/path', :locals => {:xyz => 'abc'} %>

vs

<%= render :partial => 'partial/path', :object => @some_object %>

첫 번째 xyz는 부분에서 사용 가능한 로컬 변수를 만들고 두 번째 object는 부분에서 사용 가능한 로컬 변수를 만듭니다 . 그렇다면 차이점은 무엇입니까? (게다가 locals둘 이상의 변수를 허용합니다)


두 번째 경우 : object를 사용하면 기본적으로 부분과 동일한 이름을 가진 변수가 정의됩니다. 부분 템플릿 이름이 _user.html.erb이면 템플릿에 정의 된 "user"라는 로컬 변수가 있습니다.

: as => "another_name"으로 다른 변수 이름을 지정할 수 있습니다.

이것은 여기에 문서화되어 있습니다 : http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html , 여기 : http://apidock.com/rails/ActionView/PartialRenderer

... 그리고 이전 Rails (버전 <= v3.09)의 경우 : http://apidock.com/rails/ActionView/Partials


두 번째 형태

render :partial => 'account', :object => @some_account

account부분 변수가로 설정 되는지 확인합니다 @some_account. :as옵션을 사용하여 변수의 이름을 바꿀 수 있습니다 .

의 가장 큰 장점 :locals이다

  • 당신은 개체와 이름을 매우 명확하게 제어 할 수 있습니다.
  • 둘 이상의 변수를 할당 할 수 있습니다.

그래서 당신은 다음과 같은 것을 할 수 있습니다.

render partial => 'some_view', :locals => { :user => account.user, :details => some_details_we_retrieved }

필요할 때 명확한 분리를 가능하게합니다.

:locals접근 방식 의 단점 은 더 장황하고 때로는 간단하다는 것입니다.

render :partial => 'account'

~와 동일하다

render :partial => 'account', :locals => {:account => @account }

따라서 가장 적합한 (또는 가장 적합한 곳)을 사용하십시오.


Rails 3+를 사용하는 경우 사용하기 더 쉬운 구문이 있습니다.

# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render 'account', account: @buyer %>

출처 : Action View Partials

참고 URL : https://stackoverflow.com/questions/5122223/render-partial-object-vs-locals

반응형