ruby-on-rails - Rails - 拥有完全两种不同设计的最佳实践
问题描述
我对 Rails 很陌生。
在创建网站时,您拥有公司的实际网站,描述您的产品以及更多信息,但您还需要一个用户面板,他可以在其中管理他的东西。
例如一个加密钱包网站,你有一个实际的网站,解释一切,显示信息等等,你有一个与网站设计完全不同的交易面板。
在 Rails 中,您拥有application.html.erb
构建整个网站的文件:
<!DOCTYPE html>
<html>
<head>
<title></title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= yield %>
</body>
</html>
yield呈现用户正在浏览的当前视图。
您如何使用这种结构管理完全两种不同的设计?为用户面板创建一个全新的 Rails 项目是更好的做法吗?或者可以在一个项目中完成所有工作?
解决方案
该application.html.erb
文件被视为“布局”文件,<%= yield %>
每个控制器都可以将页面内容插入到您的整体布局中。
通过简单地在旁边添加另一个文件,您可以拥有两个不同版本的东西application.html.erb
,命名为website.html.erb
. 现在,在您拥有的任何控制器中,您可以简单地添加到顶部,layout 'website'
并且该控制器中的所有控制器操作都将使用website
布局。
使用它,您可以做一些整洁的事情:
- 有两种布局,一种用于您的应用程序(钱包应用程序本身),另一种用于您的网站(不需要用户帐户的公共页面)。每个布局可以包含不同的 CSS 和 JS
- 创建一个类似于 的控制器
static_pages_controller
,它用于“静态”页面(不会根据用户而发生很大变化的页面)。对于您想要在网站上的每个页面,只需添加一个控制器操作和一个适当的模板。告诉这个控制器使用website
上面的模板。 - 因为您的静态页面通过 Rails,您甚至可以检查用户是否登录,并根据需要更改您的内容,因此您可以说“我的帐户”而不是“登录”
您可以在官方文档中阅读更多关于 Layouts 的信息。
推荐阅读
- javascript - Angular 8 中的 RouteLink 参数
- powerbi - 为什么我在 PowerBi 上看不到每一行的去年增长?
- c++ - 模板专业化仅在类范围内
- swiftui - SwiftUI 变暗修饰符
- android - 使 EditText 提供搜索结果
- javascript - 当它总是正确的时候为什么要使用while?
- rest - 我们如何创建自己的新闻 JSON API,就像 newsapi.org 网站上提供的那样?
- sorting - 一系列列上的 awk 'uniq'
- jsf - 从控制器 bean 填充 ace:comboBox 值
- termux - Termux 存储库不再有发布文件