在尝试熟悉使用资源规划路线时,我遇到了一个奇怪的错误:
无交互请求模板
- ShoppersController#index缺少请求格式的模板:text/html*
以下是Map
的路由
routes.rb
Rails.application.routes.draw do
resources :shoppers
end
shoppers_controller.rb
class ShoppersController < ApplicationController
def index
end
def create
@shopper = Shopper.new
end
end
购物者.html.erb
<h1>Welcome Shoppers</h1>
有人知道怎么解决这个问题吗?
感谢所有的反馈你分享.
3条答案
按热度按时间u4dcyp6a1#
这是因为你的观点的名字是错误的。正如你得到的错误所说:Rails期望一个动作来呈现一个模板,该模板包含在一个以其创建者命名的文件夹中。
因此,在您的情况下,结构需要是:
参考:https://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action
y3bcpkx12#
在控制器中创建一个带有动作名称的视图!
3lxsmp7m3#
在我的例子中:我已经在app/view/index.html. erb中有了index.html. erb,但仍然有这个错误:
UsersController#index is missing a template for request formats: text/html
我发现问题在于将HTML渲染为json,所以最后我改变了方法:
def index @users = User.all render json: @users end
和测试:` describe 'Users GET /users#index' do it '检查响应状态是否正确' do get users_path,header:{ 'HTTP_ACCEPT' => 'application/json' }结束