Как мне создать страницы вне приложения rails - PullRequest
2 голосов
/ 08 июля 2011

Это более запутанный вопрос, так что откройтесь со мной. То, что я хочу сделать, это иметь страницы, которые не отображаются через рельсы, чтобы у них не было заголовка и нижнего колонтитула по умолчанию для каждой страницы, которую я создал.

Итак, у меня есть веб-сайт, на котором вы можете публиковать сообщения, но когда вы заходите в root (www.localhost: 3000 /), я хочу, чтобы вам пришлось либо войти с учетной записью, либо создать учетную запись. Эти страницы имеют совершенно отдельный верхний и нижний колонтитулы, они должны быть почти другим веб-сайтом в том смысле, что они действительно не имеют никакой связи с реальным сайтом, кроме как пройти мимо них до того, как вы получите к ним доступ.

Я думаю, что эти страницы должны быть в общей папке, но я не совсем уверен.

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Вы можете либо поместить статические html-файлы в public/, как вы предложили, но гораздо лучше будет использовать Rails, в конце концов, просто с другим макетом.

С Rails вы бы создали файл, такой как app/views/layouts/application.html.erb, который использует верхний и нижний колонтитулы вашего приложения. Однако Rails не заставляет вас использовать этот макет постоянно, если только вы не захотите.

Например, рассмотрите возможность создания другого макета, например app/views/layouts/not_logged_in.html.erb. Теперь вы можете использовать этот новый макет в контроллерах, которые обрабатывают логины и регистрации:

class LoginController < ApplicationController
  layout 'not_logged_in'

  # def create, show, etc.
end

class SignUpController < ApplicationController
  layout 'not_logged_in'

  # def create, show, etc.
end

Эти два контроллера теперь будут использовать макет not_logged_in.html.erb, тогда как все остальные контроллеры будут использовать application.html.erb.

Также возможно вообще не использовать макет для вашего контроллера:

class LayoutLessController < ApplicationController
  layout nil
end
0 голосов
/ 08 июля 2011

Вы не можете программировать страницы в общедоступном каталоге (т. Е. Вы обслуживаете файлы .html, а не ruby). Из того, что я понимаю по вашему запросу, это можно сделать с помощью представлений. Все, что вам нужно сделать, это настроить другой файл макета в каталоге views / layouts и указать на этот файл в вашем контроллере следующим образом:

class MyController < ApplicationController

    layout "differentLayout"

    ...

end

Внутри differentLayout.html.erb требуются разные партиалы верхнего и нижнего колонтитула.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...