Ruby on Rails资源#index缺少请求格式的模板:text/html

yr9zkbsy  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(104)

在尝试熟悉使用资源规划路线时,我遇到了一个奇怪的错误:

无交互请求模板

  • 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>

有人知道怎么解决这个问题吗?
感谢所有的反馈你分享.

u4dcyp6a

u4dcyp6a1#

这是因为你的观点的名字是错误的。正如你得到的错误所说:Rails期望一个动作来呈现一个模板,该模板包含在一个以其创建者命名的文件夹中。
因此,在您的情况下,结构需要是:

  • app
  • 控制器
  • shoppers_controller.rb
  • 查看
  • 购物者
  • index.html.erb
  • new.html.erb

参考:https://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action

y3bcpkx1

y3bcpkx12#

在控制器中创建一个带有动作名称的视图!

3lxsmp7m

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' }

expect(response).to have_http_status(:success)
end

结束

相关问题