2011-07-08 7 views
2

これはもっと混乱しやすい質問です。 私がしたいことは、私が作ったすべてのページにデフォルトのヘッダーとフッターがないように、レンダリングされていないページがあることです。レールアプリの外にページを作成するには

私は物事を投稿できるウェブサイトを持っていますが、ルート(www.localhost:3000 /)に行くと、アカウントでサインインするか、アカウントを作成する必要があります。これらのページには完全に別々のヘッダーとフッターがあります。実際にアクセスする前に実際のサイトと実際にはつながっていないという意味では、ほとんど別のWebサイトである必要があります。

私はこれらのページがパブリックフォルダ内にある必要があるとは思っていますが、私は本当にわかりません。

おかげ

答えて

2

提案したように、静的な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 

他のすべてのコントローラがapplication.html.erbを使用する一方で、これら二つのコントローラは、今、not_logged_in.html.erbレイアウトを使用します。

それはあなたのコントローラのためにすべてのレイアウトを使用しないことも可能です:

class LayoutLessController < ApplicationController 
    layout nil 
end 
+0

は、コントローラの特定のページのレイアウトのショーを持ってする方法はありますか?私はレイアウト 'different'を試しました:only => 'specific'、 'pages' – Vasseurth

+0

@Planetplutoはい、可能です。ただし、個々のアクションで設定する必要がありますが、 'render:layout => 'not_logged_in''を使用してください。 – vonconrad

0

あなたはパブリックディレクトリ内のページを(つまりあなたは、何のルビーを.htmlファイルを提供しない)をプログラムすることはできません。私があなたの要求を理解しているから、それは間違いなく眺めによって行うことができます。あなたがやらなければならないことは、そうのようなあなたのコントローラ内でそのファイルにビュー/ layoutsディレクトリと点が異なるレイアウトファイルを設定されています

class MyController < ApplicationController 

    layout "differentLayout" 

    ... 

end 

differentLayout.html.erbの中にあなたが別のヘッダーとフッターパーシャルを必要とします。

関連する問題