Rails4에서 render partial 부분 템플릿에 변수 전달 (locals option)을 사용할 때의주의 사항

2472 단어 haml루비Rails4
Rails4 - render partial에서 부분 템플릿에 변수를 전달하는 방법 - Qiita

을 하려고 하고, 이런 식으로 쓰고 있었다.
= render 'shared/item_header', locals: { item: @item }

발생하는 오류
undefined local variable or method `item' for 

BetterErrors gem을 넣으면 이런 식으로 보입니다.

잘못된 로컬 값을 전달하는 방법





local_assigns 에 값이 건너기 때문에 보기 좋을 것 같아 보이지만 ··

올바르게 지정할 수 있는 경우





잘 보면 local_assigns 가 잘못되어 있는 분은 쓸데없이 1단 깊다. .

원인 · 해결 방법



view 로 render 를 기술할 때, 일부러 partial: 라고 쓰지 않아도 괜찮기 때문에, 거기를 생략했을 때의 옵션의 건네주는 방법에 문제가 있었다.

참고:
레이아웃 및 렌더링 | Rails 가이드

올바른 쓰기


= render partial: 'shared/item_header', locals: { item: @item }

또는
= render 'shared/item_header', item: @item

1 번째의 partial: 옵션명을 생략했을 경우는 locals: 옵션명도 사용해서는 안 된다.

locals 에 건네주는 변수가 1개만의 경우, 중괄호를 생략하는 경우가 많다(편집 리퀘스트에서의 지적을 반영)

RailsGuide의 주의점 기재 부분



레이아웃 및 렌더링 | Rails 가이드

:layout과 같은 추가 옵션을 전달하는 경우 :partial 옵션을 명시적으로 지정해야 합니다.

partial, locals 이외의 옵션을 지정하고 싶은 경우는, 생략할 수 없기 때문에 주의.

빠진 상황과 빙고의 대답



ruby on rails - Rendering partial with locals in Haml? - Stack Overflow

과연 StackOverflow
전세계까지 펼치면 같은 상태에 빠져 와타와타하고 있는 초보자와 거기에 대답해 주는 친절한 상급자의 고리가 큰.

좋은 웹페이지 즐겨찾기