区分仪表板布局和其他视图
Differentiating between a dashboard layout and other view
这个问题可能没有正确答案,但我想了解最佳做法是什么。
我已经构建了一个 rails 应用程序。在应用程序中,有一个仪表板视图和一个常规视图。在 application.html.erb 中,我将包括两个视图的页眉和页脚,但是区分这两个视图的最佳做法是什么?
我一直在考虑的两种方式是:
- 包含一个变量 (is_dashboard_view) 并检查它。
- 将 URL 更改为通用模式,例如 /dashboard/...
我倾向于选项 1,因为它似乎不那么麻烦。还有其他选择吗?最佳做法是什么。
在这种情况下,我们在 app>views>layouts
文件夹中创建一个新布局 other_view.html.erb
。然后需要使用它的控制器可以呈现为:
class OtherController
layout 'other_view'
// statements/methods
end
如果您没有在控制器上定义布局名称,那么它将使用 application.html.erb
作为默认值。
或
您可以从 params[:controller]
查看您当前所在的控制器。
您可以为不同的视图使用不同的布局。
或
您可以使用控制器名称/操作名称来区分。
params[:controller]
params[:action]
这里你需要创建一个类似于application.html.erb
的新布局dashboard.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
在您的控制器文件中,添加
layout :choose_layout
def choose_layout
return 'dashboard_layout' if action_name == 'dashboard'
'view_layout'
end
两个布局都在 layouts/ 文件夹中。您可以根据您的 actions/controllers/params 更改 'if condition'。
这个问题可能没有正确答案,但我想了解最佳做法是什么。
我已经构建了一个 rails 应用程序。在应用程序中,有一个仪表板视图和一个常规视图。在 application.html.erb 中,我将包括两个视图的页眉和页脚,但是区分这两个视图的最佳做法是什么?
我一直在考虑的两种方式是:
- 包含一个变量 (is_dashboard_view) 并检查它。
- 将 URL 更改为通用模式,例如 /dashboard/...
我倾向于选项 1,因为它似乎不那么麻烦。还有其他选择吗?最佳做法是什么。
在这种情况下,我们在 app>views>layouts
文件夹中创建一个新布局 other_view.html.erb
。然后需要使用它的控制器可以呈现为:
class OtherController
layout 'other_view'
// statements/methods
end
如果您没有在控制器上定义布局名称,那么它将使用 application.html.erb
作为默认值。
或
您可以从 params[:controller]
查看您当前所在的控制器。
您可以为不同的视图使用不同的布局。
或
您可以使用控制器名称/操作名称来区分。
params[:controller]
params[:action]
这里你需要创建一个类似于application.html.erb
的新布局dashboard.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
在您的控制器文件中,添加
layout :choose_layout
def choose_layout
return 'dashboard_layout' if action_name == 'dashboard'
'view_layout'
end
两个布局都在 layouts/ 文件夹中。您可以根据您的 actions/controllers/params 更改 'if condition'。