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 CollectionsRails 指南页面的布局和渲染部分。

于 2012-10-25T20:00:43.143 回答