-1

app/views/shared lib에 공유 부분을 보관합니다. 나는 '방법을 참조하십시오공유 부분 구성

. 
. 
. 
    <%= link_to 'Show Comments', '#', id: 'show-comments-link' %> 
    <section id="comments-section"> 

    <table id="comments-table"> 
     <tbody> 
     <%= render partial: 'shared/comment', collection: @comments %> 
     </tbody> 
    </table> 

    </section> 

</section> 

을 :

app/views/shared/_comment.html.erb :

<tr> 
    <td><%= comment.body %></td> 
    <td><%= link_to 'Edit', edit_comment_path(comment) %></td> 
    <td><%= link_to 'Destroy', comment, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 

app/views/posts/show.html.erb

그래서 예를 들어 나는 다음을 수행 할 수있는 특정 게시물에 대한 의견을 표시하려면 그것의 참조로 부분을 렌더링 할 수있다 위치app/views/shared lib d 이름이이고 파일 이름은 앞에서 _이 아니거나 .html.erb으로 끝나지 않았습니까?

<%= render partial: 'shared/comment', collection: @comments %> 

파셜 작업하는 레일이 convention over configuration을 선택하는 경우의 좋은 예입니다 :

그것은 바로 여기이 선입니다. 여기에는 많은 규칙이 있습니다.

파일 이름, 위치 및 코드 구성에 초점을 맞추고 (건너 뛰고 rendering collections). 나는 Agile Web Development with Rails 5에서이 인용이 많은 도움이 될 것입니다 생각 :

render 호출에 대한 첫 번째 옵션 또는 :partial 매개 변수는 단순한 이름 인 경우, 레일 대상 템플릿이 현재 컨트롤러의 view 디렉토리에 있다고 가정합니다. 그러나 이름에 하나 이상의 /자를 포함하면 레일스는 마지막 슬래시까지의 부분이 디렉토리 이름이고 나머지는 템플리트 이름이라고 가정합니다. 디렉토리는 app/views 이하라고 가정합니다. 따라서 컨트롤러간에 부분 및 하위 템플릿을 쉽게 공유 할 수 있습니다.

레일 애플리케이션에서 사용되는 규칙은 shared이라는 하위 디렉토리 app/views에 이러한 공유 부분을 저장하는 것입니다.

이제 comments-section 끝에 삽입 할 새 메모를 만드는 양식을 추가해야하는지 궁금합니다.

  • 는 또한 _comment_form.html.erb 그것을 이름의 app/views/shared 디렉토리에 넣어, 그리고 'shared/comment_form'로 참조를 계속해야 하는가?
  • app/views/comments 디렉터리로 모든 항목을 이동해야 할 경우 _form.html.erb으로 이름을 지정하고 'comments/form'으로 참조하십시오 (shared 디렉터리 규칙과 반대).
  • 또한 새 덧글에 대해 Posts#show 동작 내에 @new_comment = Comment.new을 생성해야합니까?
  • 공유 부분을 구성하는 방법을 결정하는 데 도움이되는 몇 가지 일반적인 지침은 무엇입니까? (어쩌면 shared/comments/_form.html.erb에 들어가야할까요?)이 수도

답변

1

첫째,이에 대한 명확한 가이드가 없습니다 언급. 그것은 모두 파일 관리 환경 설정에 기반합니다. 매우 지저분한 얻을 수

그러나, 그 자원 '보기 네임 스페이스의 범위 내에서 'comments/form' 자원 양식 (POST/PUT 액션 관련 항목) 유지는 views/shared에 덤핑보다 더 많은 의미가 있습니다 때 비슷한 이름을 가진 모든 파셜 다른 리소스가 섞여 버립니다. , shared/comments/comments_for_admin 등과 같은 루핑 템플릿에 대한 미리보기를 유지하려면 views/shared/comments의 네임 스페이스를 사용하는 것이 좋습니다.

-1

당신을 도울 수 있습니다

이 부분 렌더링 = "공유/코멘트", 모음 : @comments로 :