rails layout not showing

Asked
Viewd5252

4

I upgraded one of my apps from rails to 2.3.2 from 2.0.2. Start up find. However, once I start running any pages, the page will display but it doesn't seem to render any layout code. None of the standard tag such head, body which are in the layout get render. It seems that somehow layout is turned off. I checked the error log and didn't find any complaint on layout. Has anyone seen this?

  • We really need more information before giving an answer to this.

    Peter Wagenet04 октября 2009, 21:52
  • то же самое происходит и со мной

    Tom10 августа 2009, 00:33

6 ответов

0

Это влияет на все контроллеры?

Если нет, посмотрите app / views / .html.erb, который, вероятно, очень пустой

7

Возможно, вы переопределили функцию initialize () в своем контроллере, поэтому макет игнорируется.

См.: инициализирует нарушение настроек макета в рельсах?

1

Посмотрите, есть ли у вас файл app/views/layouts/application.html.erb - он должен быть вашим макетом по умолчанию. Я не уверен, но я думаю, что Rails в какой-то версии изменил имя файла макета по умолчанию, а также где-то в прошлом изменил расширение файла.

  • yeah. and make sure your file extension is in right order. that was my problem once :) application.erb.html wasn’t supported anymore after a certain release of Rails :)

    Martin Labuschin05 января 2010, 10:16
1

Have you tried to set the layout explicityly? (For debugging only)

render :layout => "mylayout"

This may help you to find typos. A colleague once had a space after his layout name, "application.html.erb " which we found this way.

  • Yeah, I have tried that and it works. But it you take :layou=> ‘mylayout” after render, it won’t work

    31 июля 2009, 17:00
0

Трудно сказать наверняка, основываясь на том, что вы предоставили, но вы можете проверить пару вещей:

  1. Имеются ли у ваших макетов правильные расширения файлов (.html.erb вместо .rhtml)

  2. Соответствует ли имя макета имени контроллера или, если нет, имя макета, объявленное внутри контроллера

  3. Я предполагаю, что макеты находятся в правильном каталоге в вашем приложении (app / views / layouts)

Удачи

    1. yes
    2. yes. it match.
    3. yes
    24 июля 2009, 22:08
0

Я считаю, что где-то между Rails 2.0 и 2.3 расположение ApplicationController изменилось с app/controllers/application.rb на app/controllers/application_controller.rb. Возможно ли, что из-за этой (или какой-либо другой причины) ваш ApplicationController не загружается должным образом? Если это так и если вы определили layout в этом классе, он может не использовать макет по умолчанию.

  • When I’ve been gotten by this, the app won’t start because application.rb defines ApplicationController instead of Application.

    wesgarrison16 декабря 2009, 04:31