【问题标题】:How do I create pages outside of the rails app如何在 Rails 应用程序之外创建页面
【发布时间】:2011-09-30 23:02:51
【问题描述】:

我想要不通过 rails 呈现的页面,这样它们就没有我创建的每个页面的默认页眉和页脚。

所以我有一个网站,您可以在其中发布内容,但是当您访问根目录 (www.localhost:3000/) 时,我希望您必须使用帐户登录或创建帐户。这些页面有一个完全独立的页眉和页脚,它们几乎应该是一个不同的网站,因为它们实际上与真实网站没有任何联系,只是在您访问之前通过它们。

我认为这些页面需要放在公用文件夹中,但我不太确定。

【问题讨论】:

    标签: ruby-on-rails post


    【解决方案1】:

    您不能对公共目录中的页面进行编程(即您提供 .html 文件,没有 ruby​​)。根据我对您的要求的了解,绝对可以通过视图来完成。您需要做的就是在 views/layouts 目录中设置一个不同的布局文件,并在控制器中指向该文件,如下所示:

    class MyController < ApplicationController
    
        layout "differentLayout"
    
        ...
    
    end
    

    在 differentLayout.html.erb 中,您需要不同的页眉和页脚部分。

    【讨论】:

      【解决方案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
      

      这两个控制器现在将使用not_logged_in.html.erb 布局,而所有其他控制器将使用application.html.erb

      您的控制器也可以完全不使用布局:

      class LayoutLessController < ApplicationController
        layout nil
      end
      

      【讨论】:

      • 有没有办法只显示控制器特定页面的布局?我尝试了布局“不同”、:仅=>“特定”、“页面”
      • @Planetpluto 是的,这是可能的。但是,您必须使用 render :layout =&gt; 'not_logged_in' 将其设置为单个操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      相关资源
      最近更新 更多