Rails API 如何设置根路由?
How to set up root route with Rails API?
我创建了一个带有 --api
标志的 Rails API。
我想使用自定义 HTML 文件设置根路由。
这是我的 routes.rb
:
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :pros
resources :browsers
resources :payment_methods
resources :prosps
resources :prosp_likes
resources :prosp_comments
resources :prosp_images
resources :recommendations
resources :recommendation_likes
resources :recommendation_comments
resources :recommendation_images
end
end
root "home#index"
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
这是我的 home_controller.rb
:
class HomeController < ApplicationController
def index
render 'home/index'
end
end
这是我的 views/home/index.html.erb
:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>hi</h1>
</body>
</html>
它似乎将我定向到我的 HomeController#index 方法,但它没有在浏览器上呈现 <h1>hi</h1>
。
这是我的终端输出:
Started GET "/" for ::1 at 2020-08-24 21:23:18 -0500
Processing by HomeController#index as HTML
Completed 200 OK in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 104)
不确定我是否做错了某些配置。谢谢。
您需要将 HomeController 更改为直接使用 rails,因为这将是一个 non-api 控制器:
require 'rails/application_controller'
class HomeController < Rails::ApplicationController
def index
render file: 'app/views/home/index.html'
end
end
路径 app/views/home/index.html
就是您的视图所在的位置。
对于rails-6
class HomeController < ActionController::Base
def index
render render: 'home/index'
end
end
对于 rails 5 已在此处回答:
我创建了一个带有 --api
标志的 Rails API。
我想使用自定义 HTML 文件设置根路由。
这是我的 routes.rb
:
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :pros
resources :browsers
resources :payment_methods
resources :prosps
resources :prosp_likes
resources :prosp_comments
resources :prosp_images
resources :recommendations
resources :recommendation_likes
resources :recommendation_comments
resources :recommendation_images
end
end
root "home#index"
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
这是我的 home_controller.rb
:
class HomeController < ApplicationController
def index
render 'home/index'
end
end
这是我的 views/home/index.html.erb
:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>hi</h1>
</body>
</html>
它似乎将我定向到我的 HomeController#index 方法,但它没有在浏览器上呈现 <h1>hi</h1>
。
这是我的终端输出:
Started GET "/" for ::1 at 2020-08-24 21:23:18 -0500
Processing by HomeController#index as HTML
Completed 200 OK in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 104)
不确定我是否做错了某些配置。谢谢。
您需要将 HomeController 更改为直接使用 rails,因为这将是一个 non-api 控制器:
require 'rails/application_controller'
class HomeController < Rails::ApplicationController
def index
render file: 'app/views/home/index.html'
end
end
路径 app/views/home/index.html
就是您的视图所在的位置。
对于rails-6
class HomeController < ActionController::Base
def index
render render: 'home/index'
end
end
对于 rails 5 已在此处回答: