Rails 5 api 唯一有主页的应用程序

Rails 5 api only app with home page

我已经生成了一个 rails 5 api 应用程序。但我想要我的应用程序有主页。为此,我生成了一个家庭控制器并添加了相应的视图文件 views/home/index.html.erb

但是当我尝试访问它时,我得到的响应低于响应

Started GET "/home/index" for 127.0.0.1 at 2016-07-14 11:14:03 +0530 Processing by HomeController#index as HTML Completed 204 No Content in 0ms

Started GET "/home/index.js" for 127.0.0.1 at 2016-07-14 11:14:20 +0530 Processing by HomeController#index as JS Completed 204 No Content in 0ms

但是我在网页上看不到索引页内容。

请分享您的想法。

我在同一条船上,试图做一个 Rails 5 API 仍然可以从单个 html 页面(被 JS 接管)bootstrap 的应用程序负载)。从 rails source 窃取一个提示,我创建了以下控制器(注意它使用 Rails' 而不是我的 ApplicationController 作为这个单独的非 api 控制器)

require 'rails/application_controller'

class StaticController < Rails::ApplicationController
  def index
    render file: Rails.root.join('public', 'index.html')
  end
end

并将相应的静态文件(纯 .html,而不是 .html.erb)放入 public 文件夹中。我还添加了

get '*other', to: 'static#index'

routes.rb 的末尾(在我的所有 api 路由之后)以启用保存客户端路由以进行重新加载、深层链接等

如果不在 routes.rb 中设置 root,Rails 将直接从 public 调用 / 并在非 api 上调用静态控制器] 否则路由。根据您的用例,添加 public/index.html(在 routes.rb 中没有根)可能就足够了,或者您可以通过使用

在没有奇怪的 StaticController 的情况下实现类似的事情
get '*other', to: redirect('/')

相反,如果您不关心路径保留。

我很想知道是否还有其他人有更好的建议。

如果您只需要一个静态 HTML 页面(带有一些简单的 css/js),我认为另一种方法是编辑 [=11= 下的 index.html 页面]文件夹。

只是添加到

我必须在 app/controllers 目录中创建一个 家庭控制器

app/controllers/home_controller.rb

接下来,我在其中添加了以下内容:

require 'rails/application_controller'

class HomeController < Rails::ApplicationController
  def index
    render file: Rails.root.join('public', 'index.html')
  end
end

然后,我在public目录下创建了一个index.html文件:

public/index.html

接下来,我在其中添加了以下内容:

<head>
  <title>My API</title>
</head>
<body>
    <h1>My API</h1>
    <p>Welcome to my API</p>
</body>

注意:您可以根据自己的选择修改index.html文件。

最后,我将路由添加到 config/routes.rb 文件,在所有已定义的路由下方。

get '*other', to: 'home#index'

注意:不要将它放在命名空间内,比如 api 命名空间或 api/v1 命名空间。只需将其放在文件底部但在 Rails.application.routes.draw do 块内即可。

您可以重新启动服务器并进行测试。

就这些了。

希望对您有所帮助