-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 %> 

はRailsがconvention over configurationを選択する場所の素晴らしい例です。ここにはたくさんの慣習があります。

ファイル名、場所、およびコード構成に焦点を当てています(そして、rendering collectionsはスキップしています)。

renderコールに最初のオプションまたは:partialパラメータが単純な名前であれば、Railsはターゲットテンプレートは、現在のコントローラのviewディレクトリにあることを前提としています。私はAgile Web Development with Rails 5から、この引用は非常に有用だと思います。ただし、名前に1つ以上の/文字が含まれている場合、Railsは最後のスラッシュまでの部分がディレクトリ名で、残りはテンプレート名であるとみなします。ディレクトリはapp/viewsの下にあるものとします。これにより、コントローラ間で部分およびサブテンプレートを簡単に共有できます。

Railsアプリケーション間の規約は、sharedというサブディレクトリapp/viewsにこれらの共有部分を格納することです。

ここで、comments-sectionの最後に新しいコメントを作成するためのフォームを追加する方法が不思議です。

  • 私はまた、app/views/sharedディレクトリに入れ_comment_form.html.erbという名前を付け、そして'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、:

関連する問題