【问题标题】:Rails not loading application.html.erb, instead loading view stubsRails 不加载 application.html.erb,而是加载视图存根
【发布时间】:2010-11-25 11:24:17
【问题描述】:

我的 application.html.erb 是一个带有 语句的经典文件。如果我访问 domain.com/controller/action ,则预期会产生相应目录中的视图。相反,它只是拉起视图(正确的视图,但没有应用程序包装器)。 (除了应用程序没有其他布局)

这是我的第二个 Rails 应用程序。另一个很顺利,但是这个给我一个接一个的问题。我 rtfm'd 和谷歌搜索并没有想出任何东西。我什至重新启动了 webrick,尽管我没有重新启动 apache(代理到 webrick),因为我认为这太过分了。更不用说我们托管了一些低流量的网站。

最奇怪的是,当我调用根 ie: domain.com 时,它调用 application.html.erb 并屈服于主视图。

我确实使用了脚手架,但我的理解是调用脚本/生成脚手架只是构建文件并且除了路由之外不配置任何东西。我已经修复了。

我认为可能有助于回答问题的事情。如果您需要更多,请告诉我。

在布局应用程序明显没有加载的地方开发日志:

domain.com

Processing HomeController#index (for 24.20.194.187 at 2009-09-03 15:24:15) [GET]
  Parameters: {"action"=>"index", "controller"=>"home"}
  ESC[4;35;1mCompany Columns (2.6ms)ESC[0m   ESC[0mSHOW FIELDS FROM `companies`ESC[0m
  ESC[4;36;1mCompany Load (0.4ms)ESC[0m   ESC[0;1mSELECT * FROM `companies` WHERE (`companies`.`subdomain` = 'slate') LIMIT 1ESC[0m
Rendering template within layouts/application
Rendering home/index
  ESC[4;35;1mUser Columns (2.6ms)ESC[0m   ESC[0mSHOW FIELDS FROM `users`ESC[0m
  ESC[4;36;1mUser Load (0.4ms)ESC[0m   ESC[0;1mSELECT * FROM `users` WHERE (`users`.`id` = '2') LIMIT 1ESC[0m

domain.com/users

Processing UsersController#index (for 24.20.194.187 at 2009-09-03 15:24:03) [GET]
  Parameters: {"action"=>"index", "controller"=>"users"}
  ESC[4;36;1mCompany Columns (2.6ms)ESC[0m   ESC[0;1mSHOW FIELDS FROM `companies`ESC[0m
  ESC[4;35;1mCompany Load (0.4ms)ESC[0m   ESC[0mSELECT * FROM `companies` WHERE (`companies`.`subdomain` = 'slate') LIMIT 1ESC[0m
  ESC[4;36;1mUser Columns (2.7ms)ESC[0m   ESC[0;1mSHOW FIELDS FROM `users`ESC[0m
  ESC[4;35;1mUser Load (0.4ms)ESC[0m   ESC[0mSELECT * FROM `users` ESC[0m
Rendering users/index
  ESC[4;36;1mSQL (0.2ms)ESC[0m   ESC[0;1mSET NAMES 'utf8'ESC[0m
  ESC[4;35;1mSQL (0.2ms)ESC[0m   ESC[0mSET SQL_AUTO_IS_NULL=0ESC[0m

application.html.erb [编辑的元素内容]:

哦,对了。小于大于。可以这么说,它有 html、head 和 body 标签,并带有 语句。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    首先确认视图/布局中的唯一文件是 application.html.erb,然后仔细检查您的 UsersController 并确保删除了任何指定布局的行。

    【讨论】:

    • 我做了第二部分,我以为我做了第一部分。我把所有的脚手架布局放到一个 sub 目录中,认为 rails 不会注意到它们。我将 subdir 向上移动了几个级别,voila 它可以工作。非常感谢!我知道我会在这里找到答案,当我听到答案并说“Duh”时,我知道我会用头撞墙!对不起,我必须开始敲打和“做”了。
    • 那么,您认为当您在路由中声明根时,rails 会专门针对 layouts/application.html.erb 而不是 layouts/home.html.erb?这似乎解释了为什么在家工作。
    • 按照惯例,Rails 会尝试将布局与其控制器匹配,如果没有匹配,则使用应用程序。如果您使用脚手架,您可能不需要为每个控制器都使用新布局 - 我会在您运行脚手架时删除新布局。
    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2011-01-30
    • 1970-01-01
    相关资源
    最近更新 更多