【问题标题】:Render partial error from test从测试中渲染部分错误
【发布时间】:2015-03-18 11:28:53
【问题描述】:

我正在关注 Michael Hartl Ruby on Rails 教程。在第 5.3.1 段的末尾,我正在运行我们在教程中编写的测试。对于所有 4 个测试/视图,它会生成以下错误:

ERROR["test_should_get_about", StaticPagesControllerTest, 0.207317345] test_should_get_about#StaticPagesControllerTest (0.21s) ActionView::Template::Error:         ActionView::Template::Error: Missing partial layouts/_shim with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
          * "/usr/local/rvm/gems/ruby-2.1.5@rails4/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates"
          * "/home/ubuntu/workspace/sample_app/app/views"
          * "/usr/local/rvm/gems/ruby-2.1.5@rails4/gems/web-console-2.0.0.beta3/app/views"

            app/views/layouts/application.html.erb:9:in `_app_views_layouts_application_html_erb___3690625791535586393_66697380'
            test/controllers/static_pages_controller_test.rb:17:in `block in <class:StaticPagesControllerTest>'
        app/views/layouts/application.html.erb:9:in `_app_views_layouts_application_html_erb___3690625791535586393_66697380'
        test/controllers/static_pages_controller_test.rb:17:in `block in <class:StaticPagesControllerTest>'

我有一个文件 app/views/layouts/_shim.html.erb,所以看起来没问题,而 application.html.erb 是:

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag "application", media: "all",
                                           "data-turbolinks-track" => true %>
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
      <%= render 'layouts/footer' %>
    </div>
  </body>
</html>

测试是:

  test "should get about" do
    get :about
    assert_response :success
    assert_select "title", "About | Ruby on Rails Tutorial Sample App"
  end

我不明白是什么导致了错误。在控制器中它只读取def about; end 和路由get 'static_pages/about'

项目结构为:

  • 示例应用程序
    • .bundle
    • .git
    • 应用程序
      • 资产
        • 图片
        • Javascript
        • 样式表
      • 控制器
      • 帮手
      • 邮寄者
      • 型号
      • 查看次数
        • 布局
          • _footer.html.erb
          • _header.html.erb
          • _shim.html.erb
          • application.html.erb
        • 静态页面
          • about.html.erb
          • contact.html.erb
          • help.html.erb
          • home.html.erb
    • 配置
    • 数据库
    • 日志
    • 公开
    • 春天

【问题讨论】:

  • 缺少部分布局/_shim 你有这个麻烦,你能展示你的项目结构吗?
  • 谢谢,我已经添加了项目结构。希望有帮助。渲染页眉和页脚似乎不会产生问题,我看不出与 shim 有什么不同...
  • 显示视图/布局 ls -la
  • 查看页面时是否会显示 shim?
  • 我已经为views目录添加了结构。我不确定你所说的 ls la 是什么意思(抱歉,对这个真的很陌生,只熟悉 Windows)。当我在终端中输入 app/views/layouts ls -la 时,它只会显示“bash: app/views/layouts: Is a directory”。

标签: ruby-on-rails railstutorial.org


【解决方案1】:

您的文件名中有空格,只需将它们重命名为:

_header.html.erb
_shim.html.erb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2011-05-24
    相关资源
    最近更新 更多