我正在为客户端创建导航着陆页,他希望该应用成为其网站的子页面。向现有页面域的子页面添加导轨herokuapp
app.herokuapp.com website.com/app
我如何配置域,以便当用户键入website.com/app 的app.herokuapp.com出现呢?
编辑。 Obs。客户端网站很大,运行在domains.com上的WordPress上运行
我是新来的铁路和域服务,抱歉,如果它太基本问题。
我正在为客户端创建导航着陆页,他希望该应用成为其网站的子页面。向现有页面域的子页面添加导轨herokuapp
app.herokuapp.com website.com/app
我如何配置域,以便当用户键入website.com/app 的app.herokuapp.com出现呢?
编辑。 Obs。客户端网站很大,运行在domains.com上的WordPress上运行
我是新来的铁路和域服务,抱歉,如果它太基本问题。
Heroku必须在域名的根目录下运行rails应用程序。所以基本上你只用Heroku和任何域名服务是不可能的。
但是,通过使整个事情成为一个rails应用程序,但命名空间可以实现所需的结果。这只能在网站不需要服务器运行的情况下运行。即只有HTML,CSS和JS是静态的,但没有像Angular或CMS这样的框架,就像WordPress一样。这里有一个需要采取这样做的步骤概述:
/app
,你可以将所有的“应用有关”路线的“应用程序”命名空间。在你的routes.rb:
Rails.application.routes draw do
namespace :app do
# all application routes should be placed in here
end
end
你需要将所有应用相关的控制器移到/controllers/app
。
全部应用程序控制器需要将其类重命名为具有适当的名称空间。所以,你需要改变每class WhateverController < ApplicationController
到class App::WhateverController < ApplicationController
你需要的所有应用相关的视图移动到/views/app
这一步是有点棘手。只有资产(css,javascript)在网站和应用程序之间有所不同。您需要创建分别位于/assets/javascripts
和/assets/stylesheets
之间的app.js,website.js,app.css,website.css。您还需要在/assets/stylesheets
和assets/javascripts
中创建“网站”和“应用”文件夹。将所有应用程序相关资产移至相应的/javascripts/app
和/stylesheets/app
文件夹。
添加下面的代码: 到应用程序。JS:
//= require_tree ./app
要app.css:
*= require_tree ./app
更改application.html.erb布局的资产链接:
<%= stylesheet_link_tag 'app', media: 'all' %>
<%= javascript_include_tag 'app' %>
上面的代码告诉布局来寻找应用程序.js和app.css并包含他们需要的内容。而且他们需要的是您在不同资产文件夹中的`/ app /文件夹中的所有内容。
如果您推送/部署到Heroku,应用程序应该位于website.com/app(前提是您已将“website.com”正确指向Heroku,请参阅Reference)。
下一批步骤是让网站在根名称空间的rails应用程序中生活。
/javascripts/website
和/stylesheets/websites
文件夹。添加以下代码: 要website.js:
//= require_tree ./website
要app.css:
*= require_tree ./website
创建一个新的布局(website.html.erb)。它应该看起来很相似,除了给application.html.erb:
<%= stylesheet_link_tag 'website', media: 'all' %>
<%= javascript_include_tag 'website' %>
现在,您可以创建将在/controllers
管理的网页(WebsiteController
)控制器。
class WebsiteController < ApplicationController
layout 'website' #we need to tell it which layout to use
def homepage
end
def about
end
#basically just create methods/actions for every page on the website
end
对于每个操作,请在/views/website
中创建相应的视图。例如,主页视图应该是homepage.html.erb。同时将网站中的HTML复制并粘贴到正确的.html.erb文件中。
把它与路线联系起来。
root 'website#hompepage'
get '/about' => 'website#about'
get '/contact' => 'about#contact'
#and so on...
namespace :app do
# all application routes should be placed in here
end
最后一定要经过的所有标记随处可见,以取代所有link_to
路径和src
为img标签。即使路径应用程序需要更改,因为所有路线都已更改。
另一种选择是使用high voltage gem将静态网站html添加到您的rails应用程序。
将网站添加到公共文件夹,然后将路由配置为获取/应用程序作为索引#索引不是更容易吗? – Allan
此外,我的问题是,他们的网站在domains.com内部以WordPress运行,所以我认为我不能只在heroku中安装整个WordPress网站。它不会在你的答案,因为他们可以在WordPress上创建新帖子。所以我不能那样做。非常感谢你的回答。它可能有助于其他情况。 – Allan
@Allan你不能root_to公共html文件,你仍然需要创建一个控制器。 –