0

render @postsレンダリングするインデックステンプレートに投稿コレクションをレンダリングするようなコードがありますPostsController

これでAdmin::PostsController、コレクションもレンダリングする必要がありますが、投稿コントローラーがレンダリングすると、パーシャル@postsが検索されます。admin/posts/_post.html.erb部分パスを明示的に記述する必要がありますか?この機能は設計によるものですか、それともバグですか?意味がないようです。

4

2 に答える 2

1

はい、パスを明示的に指定する必要があります。はい、これは設計によるものです。

Rails は MVC フレームワークであり、別の名前空間でコントローラーを作成すると、そのコントローラーにも別のビューが期待されるため、実際には理にかなっています。利便性について考えてみてください。いくつかの簡単なコマンドでアプリケーションをすばやくブートストラップしたい場合、投稿の公開ビューと編集用のすべての管理機能がある管理ビューがあるアプリケーションを作成したい場合は、別のディレクトリを用意することを期待します。すべての管理ビューを保存します。

于 2012-10-25T19:46:43.460 に答える
0

render @posts長いメソッド シグネチャのショートカットです。

の場合はPostsController、 のショートカットですrender :partial => "post", :collection => @posts。パーシャルはフォルダー_post.html.erbにあると予想されapp/views/postsます。

の場合はAdmin::PostsController、 のショートカットですrender :partial => "admin#post/post", :collection => @posts。パーシャルは_post.html.erbで、フォルダーにあると予想されapp/views/admin/postsます。

別のパーシャルを使用する場合は、明示的に指定する必要があります。

Rendering Collections詳細な説明については、レイアウトとレンダリングに関する Rails ガイド ページのセクションを参照してください。

于 2012-10-25T20:00:43.143 に答える