Rails - 拥有完全两种不同设计的最佳实践

Rails - Best practice to have completely two different designs

我对 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 项目是否更好?或者有可能在一个项目中全部完成吗?

您可以在一个 rails 应用程序中完成。为您的营销网站使用 static_pages controller,并使用设计进行用户身份验证。

通过设计,您可以将 before_action :authenticate_user! 用于仪表板控制器,以将访问权限限制为仅登录用户。

您可能还想阅读 Michael Hartls 关于构建 Ruby-On-Rails 应用程序的书。 https://www.railstutorial.org

看看 Mackenzie Child 的 12 in 12 挑战赛。 https://www.youtube.com/watch?v=7-1HCWbu7iU&list=PL23ZvcdS3XPLNdRYB_QyomQsShx59tpc-

application.html.erb 文件被视为 "layout" 文件,<%= yield %> 是每个控制器可以将页面内容插入整体布局的地方。

只需在 application.html.erb 旁边添加另一个文件,您就可以拥有两个不同的版本,名称类似于 website.html.erb。现在,在您拥有的任何控制器中,您只需将 layout 'website' 添加到顶部,该控制器中的所有控制器操作都将使用 website 布局。

使用它,您可以做一些巧妙的事情:

  • 有两种布局,一种用于您的应用程序(钱包应用程序本身),一种用于您的网站(public 不需要用户帐户的页面)。每个布局可以包含不同的 CSS 和 JS
  • 创建一个名为 static_pages_controller 的控制器,它适用于 "static" 页面(不会因用户而有很大变化的页面)。对于网站上您想要的每个页面,只需添加控制器操作和适当的模板。告诉这个控制器像上面那样使用你的 website 模板。
  • 因为你的静态页面正在通过 Rails,你甚至可以检查用户是否登录,并根据需要更改你的内容,所以不用说 "Log In",你可以说"My Account"

您可以在 official documentation 上阅读有关布局的更多信息。