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
に入るはずですか?:)