如何拆分Rails应用程序以便将视图和其他视图分开



我希望有两个独立的Rails应用程序,它们的视图和样式不同,即它们将共享其余的代码(模型、控制器、路由等,我们称之为"核心")。

有没有什么好的方法可以将应用程序拆分为这样两个独立的部分,以便能够维持开发?现在我已经写了第一个应用程序,我把所有东西都放在一个git存储库中,最后我想有三个独立的repo:两个用于每个应用程序的视图,第三个用于"核心"。

谢谢你的任何想法!

将核心代码提取为Rails引擎,并将其放入gem中。然后,您只需要在每个应用程序中使用gem即可。

这里有一个关于开始使用Rails引擎的指南

更新以解决布局问题

默认情况下,您可以将引擎控制器配置为使用主机应用程序的"应用程序"布局。对此,我使用了两种方法。

1) 让引擎控制器继承主机应用程序的ApplicationController。有人可能会说这是一种糟糕的做法,但我认为这是有道理的

class MyEngine::HomeController < ApplicationController
  # The layout should default to the host's "application" layout unless otherwise set in ApplicationController.
end

2) 有一个基本控制器类,所有其他引擎控制器都从该类继承。在基本控制器中将布局设置为"应用程序"。

class MyEngine::BaseController < ActionController::Base
  layout 'application'
end
class MyEngine::HomeController < MyEngine::BaseController
end

3) 您总是可以在每个引擎的控制器中设置layout 'application'

我能想到的只是视图文件夹中的git子模块,并使用render"app1/controller/action"

您需要一个if语句来呈现app1或app2,您可以将其放在应用程序控制器的before_action

将所有在angular或主干网或任何平台上编写的前端代码放在父项目目录的PUBLIC目录中。Rails代码必须在APP目录中。前端可以使用AJAX调用(API调用)与rails代码交互。如果你需要进一步澄清,请告诉我。

最新更新