【问题标题】:Ruby on Rails resources #index is missing a template for request formats: text/htmlRuby on Rails 资源#index 缺少请求格式的模板:text/html
【发布时间】:2022-01-01 04:02:39
【问题描述】:

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

没有交互式请求模板

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

这里是路线映射

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

shoppers.html.erb

<h1>Welcome Shoppers</h1>

有人知道怎么解决吗?

感谢您分享的所有反馈。

【问题讨论】:

  • 您是否已经完成了确保app/shoppers/index.html.erb 视图存在的相当明显的步骤?
  • 文件似乎被称为shoppers而不是index
  • @Grzegorz 是的,将名称改回index,现在可以使用了。是不是因为 html 文件名必须和动作名匹配?
  • 是的。 Rails 将隐式渲染一个与动作同名的模板。 guides.rubyonrails.org/…
  • 约定优于配置。您可以使用与控制器操作不匹配的名称,但遵守约定可以减少必须完成的代码/配置量。

标签: ruby-on-rails ruby ruby-on-rails-5 resources


【解决方案1】:

这是因为您的视图名称错误。正如您收到的错误所说:'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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2015-04-20
    相关资源
    最近更新 更多