변수

1

간단한 예를 발견 index.html.erb :변수

<%= render @posts %> 

_post.html.erb : 레일이 블록을 생성하지 않고 모든 게시물의 속성을 전달 어떻게

<%= post.title %> 

? 내 posts_controller 색인 조치는 @posts = Post.all 만 정의되어 있습니다.

어쩌면 부분 (게시물)의 이름으로 생각했지만 다른 레일 규칙 (복수 및 단수 이름 지정)처럼 보입니다. 그렇지?

공유 해 주셔서 감사합니다.

답변

4

레일즈는 컬렉션의 모델 이름을보고 사용할 부분의 이름을 결정합니다. 부분이 호출 될 때

: 문서에 따르면

<%= render @posts %> 

:

<%= render partial: "post", collection: @posts %> 

는 그러나,이 속기가 다음과 같이 컬렉션을 렌더링하는 전체 구문은 복수화 된 컬렉션 인 경우 부분의 개별 인스턴스는 컬렉션의 멤버에 액세스 할 수 있으며 부분적으로 이름이 지정된 변수를 통해 렌더링됩니다. 이 경우 partial은 _post이며 _post 부분 내에서 은 post를 참조하여 렌더링중인 인스턴스를 가져올 수 있습니다.

당신은 rails guides

에 대한 자세한 설명을 찾을 수 있습니다