【问题标题】:Rails "Template is missing" error, though it exists (3.2.1)Rails“模板丢失”错误,尽管它存在 (3.2.1)
【发布时间】:2012-03-01 08:09:05
【问题描述】:

我刚开始使用 Rails,不确定我做错了什么。

在 routes.rb 我有

resources :pages

在 app/controllers/pages_controller.rb 我有

class PagesController < ApplicationController
  def index
  end
end

我在 app/views/layouts/application.html.erb 中有一个布局,在 app/views/home/pages/index.html.erb 中有一个模板,我希望在请求“/pages”时呈现它。但是,我得到了错误

模板丢失

缺少模板页面/索引、带有 {:locale=>[:en] 的应用程序/索引, :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}。搜索: * "/###/app/views"

我多年来一直在使用 stackoverflow 没有发帖,但似乎有很多不同的事情触发了这个错误,以至于我很难为我的特殊情况找到答案。我也是菜鸟:3请帮忙!

【问题讨论】:

  • 如果您的文本编辑器在刷新时正在写入文件,则该文件不可用并且会导致类似的错误。它发生了。

标签: ruby-on-rails ruby-on-rails-3 templates resources routes


【解决方案1】:

你说你有app/views/home/pages/index.html.erb 来代表你的页面资源的索引视图。我认为home/ 目录不是必需的。

换句话说,您的视图文件应该是app/views/pages/index.html.erb

【讨论】:

  • 谢谢!看起来这是一个缺乏睡眠的错误:p 如果可以的话,我会支持你。
【解决方案2】:

它希望在 app/views/pages/index 中找到它,但你在 app/views/home/pages/index 中找到了它。这种细微的差别使得 Rails 约定丢失了。

如果您必须保留新的目录层次结构,请在您的控制器上执行此操作:

class PagesController < ApplicationController
  def index
    render :partial => "home/pages/index"
  end
end

但是,默认情况下,如果你有一个资源,比如:pages,它会自动查找app/views/pages

【讨论】:

  • 感谢您提供额外信息!我个人不需要这样做,但其他人可能会这样做。
【解决方案3】:

我遇到了这个问题,我只需将文件夹名称从 car 更改为 cars 即可解决。我不得不将文件夹名称从单数更改为复数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多