【问题标题】:set a layout for certain actions?为某些操作设置布局?
【发布时间】:2010-01-20 14:00:29
【问题描述】:

我的 app/views/layouts 文件夹如下所示:

application.html.erb
user_sessions.html.erb
errors.html.erb

这些工作正常,我对它们没有任何问题,但 id 现在想为提示添加新布局,但仅限于索引和显示操作。

“tips.index.html.erb”会起作用吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    根据需要添加一个名为“tips.html.erb”的新布局

    在提示控制器中添加以下内容:

    layout "tips", :only => [ :index, :show ]
    

    您可以使用以下命令指定特定操作的布局:

    def new 
        render(:layout => "layouts/application")
    end
    

    我从未尝试在控制器中使用多个布局声明。可能是添加另一个

    layout "standard", :only => [ :new, :edit ] 
    

    可能有用...

    【讨论】:

    • 值得一提的是,您可以在控制器中多次调用layout,因为只会评估最后一次调用。相反(至少在 rails 4 中),您可以调用 layout 传递方法的符号。然后该方法可以动态返回不同的模板名称。见layout
    【解决方案2】:

    如果你想在一个控制器中使用多个布局,使用下面的代码:(action_name 是一个预定义的变量,你可以直接在 Rails 中使用)

    class OrdersController < BaseController
      layout :determine_layout
    
    private
      def determine_layout
        %w(new).include?(action_name) ? "some_layout" : "public"
      end
    end
    

    见:https://stackoverflow.com/a/5525014/445908

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多