Rails路由到另一个目录

Rails routing to another directory

有没有办法让路由使用不在预期文件夹中的视图?

这是我的问题...我正在为我的 Reports 创建一个新视图,但是我收到 Missing template v1/reports/index 错误。

routes.rb

api_version(module: "V1", path: { value: "v1" }) do
  resources :reports, only: [:create, :index]
end

views/reports/index.html.erb

<h3>Just some test content</h3>

controllers/v1/reports_controller.rb

class V1::ReportsController < ApplicationController
  def index
   @company = current_user.company

   reports = if @company
    @company.reports.order("created_at DESC")
   else
    []
   end
  end
end

_导航.html.erb

<%= link_to "Reports", v1_reports_path, role: "menuItem" %>

我使用 apipie 为我的应用程序创建了一些 API,它在我的应用程序中的 'v1' 目录下有许多控制器,现在在我扩展我的应用程序时引起了一些问题应用程序(我认为)。我不想重做结构,所以希望有一种方法可以引导路由使用 views/reports/ 下的视图,而不是 v1/reports/ 下的视图,这正是它正在寻找的不存在的视图.

...或者我还必须创建一个 `views/v1/reports/index.html.erb' 文件?

你应该能够告诉你的控制器渲染什么路径

class V1::ReportsController < ApplicationController
  def index
   @company = current_user.company

   reports = if @company
    @company.reports.order("created_at DESC")
   else
    []
   end
  end
  render '/path/to/views/reports/index.html.erb'
end

请参阅 render method

文档的第 2.2.3 节和第 2.2.5 节

尽管如此,您应该使用 rails 希望您使用的目录。主要是因为如果有一个 v2 控制器在路上,你会把它的视图放在哪里?