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

问题描述 投票:0回答:3

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

没有交互式请求模板

ShoppersController#index 缺少请求格式的模板:text/html

以下是路线图

路线.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

shoppers.html.erb

<h1>Welcome Shoppers</h1>

有谁知道如何解决这个问题吗?

感谢您分享的所有反馈。

ruby-on-rails ruby ruby-on-rails-5 resources
3个回答
2
投票

这是因为你的视图名称错误。正如您收到的错误所示:“Rails 需要一个操作来呈现一个具有相同名称的模板,该模板包含在以其控制器命名的文件夹中”

所以在你的情况下,结构需要是:

  • 应用程序
    • 控制器
      • 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


0
投票

使用控制器中的操作名称创建一个视图!


0
投票

就我而言: 我已经在 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 
和测试: ` 描述 'Users GET /users#index' 执行的操作 它“检查响应状态是否正确” 获取用户路径,标头:{ 'HTTP_ACCEPT' => 'application/json' }

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

结束 `

© www.soinside.com 2019 - 2024. All rights reserved.