Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 区分仪表板布局和其他视图_Ruby On Rails_Dashboard - Fatal编程技术网

Ruby on rails 区分仪表板布局和其他视图

Ruby on rails 区分仪表板布局和其他视图,ruby-on-rails,dashboard,Ruby On Rails,Dashboard,对此可能没有正确的答案,但我想了解最佳实践是什么 我已经构建了一个rails应用程序。在应用程序中,有一个仪表板视图和一个常规视图。在application.html.erb中,我将包括两个视图的页眉和页脚,但是区分这两个视图的最佳实践是什么 我一直在思考的两种方法是: 包括一个变量(is_仪表板_视图)并检查它 将URL更改为具有公共模式,如/dashboard/ 我倾向于选择1,因为它似乎不那么麻烦。还有其他选择吗?最佳做法是什么。在这种情况下,我们将在应用程序>视图>布局文件夹中创建一个新

对此可能没有正确的答案,但我想了解最佳实践是什么

我已经构建了一个rails应用程序。在应用程序中,有一个仪表板视图和一个常规视图。在application.html.erb中,我将包括两个视图的页眉和页脚,但是区分这两个视图的最佳实践是什么

我一直在思考的两种方法是:

  • 包括一个变量(is_仪表板_视图)并检查它
  • 将URL更改为具有公共模式,如/dashboard/

  • 我倾向于选择1,因为它似乎不那么麻烦。还有其他选择吗?最佳做法是什么。

    在这种情况下,我们将在
    应用程序>视图>布局
    文件夹中创建一个新布局
    other_view.html.erb
    。然后,需要使用它的控制器可以渲染为:

    class OtherController
    
      layout 'other_view' 
      // statements/methods 
    
    end 
    
    如果您没有在控制器上定义布局名称,那么它将使用
    application.html.erb
    作为默认值


    您可以从
    params[:controller]
    检查您当前所在的控制器。

    您可以为不同的视图使用不同的布局

    您可以使用控制器名称/操作名称进行区分

    params[:controller]
    params[:action]
    

    在这里,您需要创建一个新的布局
    dashboard.html.erb
    ,类似于
    application.html.erb
    。在这个新的布局中,您只能使用要为仪表板视图加载的资源,并且可以使用如下特定布局

    class MyController < ApplicationController
      layout 'dashboard'
    end
    
    class MyController
    对于每个操作的rails布局,您可以使用一种方法来设置布局。

    class MyController < ApplicationController
      layout :resolve_layout
    
      # ...
    
      private
    
      def resolve_layout
        case action_name
        when "new", "create"
          "some_layout"
        when "index"
          "other_layout"
        else
          "application"
        end
      end
    end
    
    class MyController
    在控制器文件中,添加

      layout :choose_layout
    
      def choose_layout
        return 'dashboard_layout' if action_name == 'dashboard'
        'view_layout'
      end
    
    其中两个布局都位于布局/文件夹中。您可以根据您的操作/控制器/参数更改“如果条件”