【问题标题】:Rails override controller layout in gemRails 覆盖 gem 中的控制器布局
【发布时间】:2011-04-01 23:44:52
【问题描述】:

我正在使用一个 gem,它向我的 Rails 应用程序添加了一个引擎,其路由都使用默认应用程序布局呈现 html 的 sn-ps。我希望这个 gem 中的控制器使用不同的布局。有没有一种方法可以将代码添加到初始化程序中,这将动态地导致 gem 中的控制器始终使用布局。例如。假设我正在使用的 gem 中定义了 SampleController 的完整定义,我可以在初始化程序中抛出类似以下代码(不起作用)吗?

class SampleController
  layout 'my_layout'
end

我知道您可以调用class_evalinstance_eval 来获取类和实例方法,但是如何覆盖这种类型的初始化代码?

【问题讨论】:

  • 您不需要为此做任何类或实例评估工作。您的引擎应该自动将您的引擎布局目录推送到视图路径堆栈上。只需确保您的引擎配置正确指定了目录(请注意,如果您单独指定一个路径,则需要全部指定)。

标签: ruby-on-rails ruby


【解决方案1】:

如果您在布局目录中创建一个“sample.html.haml”(或任何模板语言),它将被用于 SampleController,而不是 application.html。

http://guides.rubyonrails.org/layouts_and_rendering.html#finding-layouts

【讨论】:

  • 好主意,除了我想使用的替代布局已经存在并且被命名为别的东西。如果我想不出其他任何东西,我可能会将其复制到“sample.html.haml”中并接受这个答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多