2014-07-19 3 views
1

나는 부분 (_car_grid.html.erb)가 :레일 부분 지문 및 인스턴스 VAR 전달은

<ul class="car-grid"> 
    <%= render @cars %> 
</ul> 

그럼 내가 다른 곳에서 부분을 호출하고자하지만, 내가 사용하고 인스턴스 VAR는 @car_results라고 . @car_results을 전달하는 방법이 있으며 부분적으로 @cars으로 작동합니까?

<%= render 'shared/car_grid', locals: {cars: @car_results} %> 

을하지만 그것을 좋아하지 않는 것 :

나는 노력했다.

아이디어가 있으십니까?

답변

0

끝났습니다. @carscars이되도록 부분에 '@'을 넣으십시오. 지역 변수를 부분 변수로 전달할 때 부분 변수는 인스턴스 변수가 아니라 지역 변수를받습니다.

이것은 당신이뿐만 아니라 부분의 다른 호출을 변경해야합니다의 의미 : 부분에서

<%= render 'shared/car_grid', locals: {cars: @cars} %> 
+0

감사 &을 부분을 다시로드 할 수있는 기능을 제공합니다.내가 할 때'render cars' 행이 실패하여

    <% cars.each do | car | %> <% = 렌더링 '자동차/자동차'%> <% end %>
그러나이 정의되지 않은 지역 변수 또는 메소드 '자동차' 어떤 생각 실패? – rctneil

+0

이상한 변수를 잃어 버릴 때까지 조금씩 단계별로 살펴보십시오. –

0

를, 인스턴스 변수를 사용하지 않습니다. 필립의 제안이 맞습니다.

그러나 내가 알아챈 또 다른 사항은 부분 렌더링에 잘못된 구문을 사용하고 있다는 것입니다. 사실, 렌더링을위한 두 가지 방법이 있습니다 부분

<%= render partial: "shared/car_grid", locals: {cars: @car_results} %> 

또는

<%= render "shared/car_grid", cars: @car_results %> 

코드는 partial 키워드를 포함하지 않는, 그래서 당신은 locals

0

부분 지문을 사용할 필요가 없습니다

본질적으로 레일 partials은 의미가 없습니다 @instance variables. 그들은 당신이 그들에게 local variables를 전달해야하므로 이유, 응용 프로그램의 어떤 부분에 사용되는 의미 : - local 변수가 참조하는 경우

<%= render partial: 'shared/car_grid', locals: { cars: @car_results } %> 

부분적인 본질적으로는 code block 좋아한다.

컬렉션

당신이 알아야 할 몇 가지 다른 흥미로운 기능 -

#app/views/shared/_car_grid.html.erb 
<% cars.each do |car| %> 
    <%= car.name %> 
<% end %> 

:이 부분 안쪽 부분을 호출 할 때 정의 된대로, 당신은, 지역 변수를 호출해야합니다 의미 약 collection을 사용하면 부분을 호출 할 수 있습니다.

<%= render partial: "shared/car_grids", collection: @car_results, as: :car %> 

이 기본적으로 each 루프처럼 작동 - 당신에게 컬렉션의 각 구성원에 대해 다시 다시에 대한