Development Tip

부분보기에 매개 변수 전달

yourdevel 2020. 11. 19. 22:07
반응형

부분보기에 매개 변수 전달


여러 이미지와 해당 이미지의 관련 태그를 표시하는보기가 있습니다. 각 이미지와 태그에 부분보기를 사용하기로 결정했지만 이미지 개체를 부분보기로 전달하는 데 문제가 있습니다. 다음은 기본보기의 관련 코드입니다.

<table>
  <% @images.each do |i| %>
    <tr>
      <%= render :partial => :image_tag, :image => i %>
    </tr>
  <% end %>
</table>

다음은 부분보기의 관련 코드입니다 (부분보기의 이름은 _image_tag.html.erb).

<table>
  <%= image.id %>
  <%= image_tag image.src %>
</table>

스레드에서 현재 수행중인 방식으로 이미지 개체를 전달할 수 있음을 읽었 습니다. render 메서드의 옵션 해시를 통해 id를 전달하려고 시도했지만 작동하지 않았습니다. 내가 얻는 오류는 다음과 같습니다.

undefined method `model_name' for Symbol:Class

메인 뷰에서 render : partial이라고 부르는 라인을 중심으로합니다.


<%= render partial: "image_tag", locals: {image: i} %>

변수를 부분에 전달하는 방법입니다.


부분에 값을 보내는 데 문제가있는 사람들을 위해 고려해야 할 다른 사항입니다. 부분 경로 앞에 'partial :'을 생략하면 다음 과 같습니다.

<%= render 'my_partial', :locals => {:greeting => 'Hello world', :x => 36} %>

... 로컬 해시 값에 직접 액세스 할 수없는 것 같습니다. 대신 다음을 수행해야합니다.

<div>
  <h1> <%= locals[:greeting] %> , my x value is <%= locals[:x] %> </h1>
</div>

그러나 다음과 같이 부분 경로 앞에 'partial :' 을 포함합니다.

<%= render partial: 'my_partial', :locals => {:greeting => 'Hello world', :x => 36} %>

... 다음과 같이 해시 값에 직접 액세스 할 수 있습니다.

<div>
  <h1> <%= greeting %> , my x value is <%= x %> </h1>
</div>

고려할 사항이 있습니다. 로컬 해시 값에 액세스하려고 할 때이 문제에 걸려 넘어졌고 'partial :' 구성 요소를 생략했음을 깨달았습니다 .


다음과 같이 전체 객체를 부분으로 전달할 수도 있습니다.

<%= render :partial => "partialpath", :object => :image %>

i를 귀하의 경우 이미지로 바꾸고 부분 경로를 귀하의 부분이 호출되는 모든 것으로 바꿉니다. 부분 내에서 부분 이름과 동일한 이름을 가진 지역 변수에 액세스 할 수 있습니다. 따라서 부분 이름이 "이미지"이면 지역 변수 이미지가 전달되는 개체가됩니다.

편집 : 레일 가이드를 보면 레일 3에서 : object가 이제 로컬 대신 인스턴스 변수로 액세스되므로 @image가 부분에서 사용하는 것입니다.

참고 URL : https://stackoverflow.com/questions/6672454/passing-parameters-to-partial-view

반응형