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

时间:2017-02-01 03:33:59

标签: ruby-on-rails dashboard

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

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

我一直在考虑的两种方式是:

  1. 包含变量(is_dashboard_view)并进行检查。
  2. 更改网址以使用常用模式,例如/ dashboard /...
  3. 我倾向于选择1,因为它似乎不那么麻烦。还有其他选择,最佳做法是什么。

4 个答案:

答案 0 :(得分:0)

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

class OtherController

  layout 'other_view' 
  // statements/methods 

end 

如果您没有在控制器上定义布局名称,那么它将使用application.html.erb作为默认值。

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

答案 1 :(得分:0)

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

OR

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

params[:controller]
params[:action]

答案 2 :(得分:0)

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

class MyController < ApplicationController
  layout 'dashboard'
end

对于每个操作的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

答案 3 :(得分:0)

在控制器文件中,添加

  layout :choose_layout

  def choose_layout
    return 'dashboard_layout' if action_name == 'dashboard'
    'view_layout'
  end

其中两个布局都在布局/文件夹中。你可以根据你的行动/控制器/参数更改'if condition'。