Ruby on rails Rails中嵌套资源的嵌套布局

Ruby on rails Rails中嵌套资源的嵌套布局,ruby-on-rails,layout,nested-resources,Ruby On Rails,Layout,Nested Resources,是否可以按照routes.rb中的指定,自动将指定的布局模板分配给特定控制器以及嵌套在其中的所有资源?此布局应仅应用指定的控制器视图及其嵌套视图;它不需要像application.html.erb那样应用于应用程序中的每个视图(我实际上是将专用布局与应用程序布局一起用于嵌套布局) 比如说,如果我 map.resources :news, :shallow => true do |n| n.resources :articles do |a| a.resources :comme

是否可以按照routes.rb中的指定,自动将指定的布局模板分配给特定控制器以及嵌套在其中的所有资源?此布局应仅应用指定的控制器视图及其嵌套视图;它不需要像application.html.erb那样应用于应用程序中的每个视图(我实际上是将专用布局与应用程序布局一起用于嵌套布局)

比如说,如果我

map.resources :news, :shallow => true do |n|
  n.resources :articles do |a|
    a.resources :comments
  end
end
当我访问像
localhost/news/1/articles/new
这样的url时,我应该会看到我的
news.html.erb
布局正在运行。到目前为止,我没有

很明显,我不想为嵌套在父控制器中的每个控制器重新创建相同的布局文件(即使我将从布局中取出肉并将其放入共享部分)。对于在特定的控制器中指定布局模板,我甚至不那么激动(这个特定的例子是一种暂时的事情,尽管我会在以后的一段时间里对此有一个“真实”的用例)


谢谢

对于您的news.html.erb问题,这是打字错误吗?您应该看到新的.html.erb文件,该文件位于views/articles文件夹中(假定为默认布局),而不是news.html.erb文件。您必须确保设置了@news实例变量,并且您的表单_for将用于[@news,@article],而不仅仅是@article

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

“我对在控制器本身中指定布局模板更不感兴趣”

没有理由担心这一点。这只是你所做的。这是一行DSL代码,专门为此目的而创建的。不笨重

class ArticlesController < ActionController::Base
  layout :news
end
class ArticlesController
为了清晰起见,编辑原始问题(答案并没有完全回答核心问题),我意识到我需要做的是让嵌套的控制器类从顶级父类继承。这不仅使解决核心问题变得更容易,还解决了困扰我的其他一些问题


(我会说“a'doy”,但还有其他人在使用这个应用程序,这使通常更为明显的情况变得模糊了。)

我提到的“news.html.erb”文件在我的项目中并不存在;我只是在继续Rails指南中显示的示例(参见原始消息中的链接)。这里的问题不是为我所有的视图创建一个总体布局;问题是在现有的application.html.erb文件中使用嵌套布局。如果您阅读参考文章,将更详细地解释这个想法。再次澄清一下,我有一个application.html.erb与第二个布局文件嵌套。我希望为多个控制器显示嵌套布局。同样,我认为中心问题已经丢失。我有一个标准的应用程序布局正在所有页面上使用,我有一个用于嵌套布局的二级布局。我希望一个特定资源中的所有嵌套资源都使用嵌套ed布局模板。谢谢!