2009-12-09 225 views
0

如routes.rb中所指定的,是否可以自动将指定的布局模板分配给特定的控制器以及嵌套在其中的所有资源?此布局应该只应用指定的控制器视图和嵌套在其中的那些视图;它不需要应用于应用程序中的每个视图,就像application.html.erb会(我实际上使用具有嵌套布局的应用程序布局的专用布局)。Rails嵌套资源的嵌套布局

因此,举例来说,如果我有

map.resources :news, :shallow => true do |n| 
    n.resources :articles do |a| 
    a.resources :comments 
    end 
end 

当我访问一个网址像localhost/news/1/articles/new我应该看看我在行动news.html.erb布局。截至目前,我没有。

我显然不希望为嵌套在父级中的每个控制器重新创建相同的布局文件(即使我将布局中的肉拉出并放入共享的部分中)。我对在特定的控制器本身中指定布局模板的兴趣更低(这个具体的例子是一种暂时的事情,尽管我会在这一点上有一个'真正的'用例)。

谢谢!

回答

1

编辑为清晰起见,原来的问题(答案是不完全应答的中心问题),我意识到我需要做的是有嵌套控制器类从顶级父继承。这不仅使得解决中心问题变得更容易,而且还修复了其他一些令我烦恼的事情。

(我会说“a'doy”但也有其他人对这个应用程序,它掩盖什么,通常会更明显一点的工作。)

0

对于你的news.html.erb问题,是一个错字?你应该看到你的views/articles文件夹中的new.html.erb文件(假设默认布局),而不是news.html.erb文件。您必须确保您的@news实例变量已设置,并且您的form_for将用于[@news,@article]而不仅仅是@article。

而且,你不必为每个控制器创建布局,你可以创建你的布局文件夹一个application.html.erb并没有在布局文件夹中的布局将使用应用程序的所有控制器。 html.erb并且您不必在控制器中指定它,只需删除与控制器同名的布局即可。

+0

的“news.html.erb”文件到我在我的项目中实际上并不存在这种提及;我只是继续了Rails指南中的示例(请参阅原始消息中的链接)。这里的问题不是为我的所有观点创建一个总体布局;问题是在现有的application.html.erb文件中使用嵌套布局。如果你看看参考文章,这个想法会更详细地解释。 再次,为了澄清,我有一个application.html.erb与第二个布局文件嵌套。我想为多个控制器显示嵌套布局的组合。 – tmo256 2009-12-10 17:58:20

0

我甚至不太激动不已的控制器指定布局模板本身

没有理由担心这个。这只是你所做的。这是专门为此设计的一行DSL代码。不笨。

class ArticlesController < ActionController::Base 
    layout :news 
end 
+0

同样,我认为中心问题正在丧失。我有一个标准的应用程序布局,正在所有页面上使用,我有一个辅助布局,我正在使用它嵌套布局。我想为一个特定资源中的所有嵌套资源使用嵌套布局模板。谢谢! – tmo256 2009-12-11 14:34:15

+0

这就是这样做... – MattMcKnight 2009-12-12 04:27:17