2012-10-25 32 views
0

我有一個像render @posts代碼來呈現我的帖子收集其中PostsController呈現指數模板。Rails的隱含在模板呈現來自多個控制器

現在我有一個Admin::PostsController也應該呈現集合,但是當我的帖子控制器呈現@posts它會尋找admin/posts/_post.html.erb部分。我現在是否必須寫出部分路徑的明確性?這是功能設計還是錯誤?這似乎沒有道理。

+0

@Malestor哦拍攝我怎麼錯過了,但服用一點從你的問題軌呈現部分從認爲控制器的目錄(如果沒有明確定義),所以如果非要給一個答案,那麼我會建議它作爲一個有效的'功能'而不是bug,因爲它讓我靈活地知道在我的控制器中定義的對象的部分位於該控制器本身的視圖目錄內(直到明確定義爲止)正確如果我錯了 – Viren

回答

1

是的,你需要明確提供路徑。是的,這是設計。

它實際上是有道理的,因爲Rails是一個MVC框架,如果你在不同的命名空間創建一個控制器可以預料該控制器獨立意見了。考慮一下便利性,如果你想用一些簡單的命令來快速啓動一個應用程序,一個應用程序有一個公共的職位視圖,而一個管理員視圖可以編輯所有管理員的好東西,那麼你會希望有一個不同的目錄存儲所有管理員視圖。

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文件夾中。

如果你想要使用不同的部分,你應該明確指定它。

請參閱的Rails指南頁面的Rendering Collections部分以獲取詳細說明。