부분보기에 매개 변수 전달
여러 이미지와 해당 이미지의 관련 태그를 표시하는보기가 있습니다. 각 이미지와 태그에 부분보기를 사용하기로 결정했지만 이미지 개체를 부분보기로 전달하는 데 문제가 있습니다. 다음은 기본보기의 관련 코드입니다.
<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
'Development Tip' 카테고리의 다른 글
문자열에서 구두점을 제거하려면 어떻게해야합니까? (0) | 2020.11.19 |
---|---|
Win7 64 비트, Python 2.6.4에 PIL (Python Imaging Library) 설치 (0) | 2020.11.19 |
CSV 형식의 mysqldump (0) | 2020.11.19 |
인라인 블록으로 새 줄을 끊으셨습니까? (0) | 2020.11.19 |
Swift Playground는 UIKit을 지원합니까? (0) | 2020.11.19 |