Rails 5 API 不生成视图

Posted

技术标签:

【中文标题】Rails 5 API 不生成视图【英文标题】:Rails 5 API not generating views 【发布时间】:2018-11-17 11:52:34 【问题描述】:

我使用 --api 标签启动了一个新的 Rails 5 项目。

我决定拥有某些管理控件,为此我需要视图。我修改了基本应用程序控制器以从ActionController::Base 继承而不是ActionController::API

但它仍然无法正常工作。我不断收到路由错误

routes.rb

Rails.application.routes.draw do
  get 'review/index'

  get 'review/show'

  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    scope module: 'api' do
        namespace :v1 do
            resources :articles, only: [:index, :show]
        end
    end
end

rails 生成控制器输出

>$ rails g controller Review index show
      create  app/controllers/review_controller.rb
       route  get 'review/show'
       route  get 'review/index'
      invoke  test_unit
      create    test/controllers/review_controller_test.rb

即使我手动创建了文件夹和文件,它也不会生成视图。

编辑 - 啊。愚蠢的我。我生成了控制器而没有在名称中添加多个。公约是一个严格的妈妈。

rails g controller reviews index show

【问题讨论】:

您以错误的方式定义了您的路线。试试resources :reviews, only: [:index, :create] 那些是自动生成的。并且更改它们仍然不起作用。我已经重启了服务器。 【参考方案1】:

您已经使用--api 标志创建了项目,它不会为您生成视图(因为它预计只是一个 API)。我怀疑你想创建没有--api 的项目,而只是手动创建一些特定于 API 的控制器。

【讨论】:

您绝对可以在 API 模式下创建工作视图。我不记得是怎么做到的,但这绝对是可行的@arjun。 可行的,但是通过使用--api 定义项目,创建的项目没有一堆视图可能期望存在的东西。我首先将控制器更改为ActionController::Base,然后手动创建视图文件 @AlecSanger 我已经这样做了。首先在帖子中提到它。 好吧,我搞定了。对问题进行了编辑。没有遵循命名约定。谢谢你们。 如果您访问/review/index,它会加载页面吗?如果您希望在不使用 URI 中的 index 的情况下加载它,则需要将您的路由定义为资源或专门将您的 get review 指向正确的控制器。

以上是关于Rails 5 API 不生成视图的主要内容,如果未能解决你的问题,请参考以下文章

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)

Rails 5.2 不呈现新视图

Rails 5.1 button_to helper生成查询字符串而不是隐藏表单

Rails 5.0.0.beta1 - 从未过滤的请求参数生成 URL 是不安全的

SVG 到 PDF 在 Rails 5.0 中无法正常工作

Ruby on Rails 使用视图助手中的变量在视图中动态生成字段名称