0

我正在使用 Rails 版本 2.3.14,我正在尝试找出为我网站的全新部分使用不同布局的最佳方法,但我想不出最有效的方法。

例如,我有一个 CRM,一切localhost/controller/method正常,但我想做的是在我的站点中创建一个名为portal.

我考虑过创建一个新应用程序,但我真的不想这样做,因为本小节将使用现有的控制器,所以我不想最终陷入不得不记住更新两个控制器以确保其内容的情况是相同的,因为那最终会变得混乱。

我读了这个答案rails 3,如何添加一个与应用程序其他部分不使用相同布局的视图?这是有道理的,但我想不出如何将其应用于我的情况。

例如http://localhost/,会显示我现有的登录页面,类似localhost/portal会显示新部分的登录页面,但布局完全不同,但使用相同的模型和控制器。

我是 Rails 的新手,所以我可能想多了,或者我可能找错了树。

如果可能的话,我认为最简单的方法是以某种方式检查 urlportal并根据该检查的结果设置布局。

4

1 回答 1

1

我阅读了您发布的答案,这是有道理的,我只是尝试在您的情况下为您提供一些真实的代码。

您有一个子站点,这意味着您在子站点中所有页面的路径都将以'/portal'开头,对吗?

在您的 app/views/layout 中,您可以添加一个名为“portal_subsite.html.erb”的布局。

在你的 application_controller.rb

class ApplicationController < ActionController::Base
  layout :get_layout

  private

  def get_layout
    if  request.path.start_with?('/portal')
      'portal_subsite'
    else
      'application'
    end
  end
end

我现在还没有 Rails 2 的环境,但我认为应该可以,如果您有任何问题,请在下方评论。

于 2013-08-30T08:50:57.197 回答