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

时间:2018-04-27 17:40:33

标签: ruby-on-rails ruby web-deployment

我是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项目是一种更好的做法吗?或者可以在一个项目中完成所有工作?

2 个答案:

答案 0 :(得分:2)

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

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

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

  • 有两个布局,一个用于您的应用程序(钱包应用程序本身),另一个用于您的网站(不需要用户帐户的公共页面)。每个布局都可以包含不同的CSS和JS
  • 创建一个名为static_pages_controller的控制器,用于&#34;静态&#34;页面(基于用户不会发生很大变化的页面)。对于网站上您想要的每个页面,只需添加控制器操作和相应的模板即可。告诉此控制器使用上述website模板。
  • 因为您的静态页面正在通过Rails,您甚至可以检查用户是否已登录,并根据需要更改您的内容,因此您可以说&#34;而不是说#34;登录&#34; 34;我的帐户&#34;

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

答案 1 :(得分:-1)

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

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

您也可以阅读有关构建Ruby-On-Rails应用程序的Michael Hartls Book。 https://www.railstutorial.org

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