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.1 button_to helper生成查询字符串而不是隐藏表单