【问题标题】:Rails 4 does not render my LayoutRails 4 不呈现我的布局
【发布时间】:2016-06-09 09:21:41
【问题描述】:

我目前对 Rails 4 中的布局感到震惊,截至目前,我为我的控制器创建了一个布局,并且使用 layout "layout_name" 在我的控制器中成功调用了它

但问题是,每当我重定向到该控制器时,它只会呈现页面本身而不是其顶部的布局。

这是我的代码截图:

class LoginController < ApplicationController
  layout "login_layout"
  def index
    user = User.new
  end

  def login_user
    validate_credential = User.login(params[:user])
    if validate_credential[0] == true
      session[:user_firstname] = validate_credential[1][0]["firstname"].capitalize
      session[:user_lastname] = validate_credential[1][0]["lastname"].capitalize
      session[:user_id] = validate_credential[1][0]["id"]
      session[:advisory_class] = validate_credential[1][0]["advisory_class"].capitalize
      redirect_to :controller=> 'dashboard', :action=> 'home'
    else
      redirect_to :action=>'index'
    end
  end

不要让我的 login_user 函数中的 redirect_to 渲染布局。

这是我的注销代码(来自另一个控制器)

class DashboardController < ApplicationController
  layout 'dashboard_layout'
  def home
  end

  def settings
  end

  def students
  end

  def logout
    session.clear
    redirect_to :controller=>'login',:action=>'index'
  end

它呈现页面本身,但不包括该控制器的布局。

我已经搜索了很多解决方案,但仍然没有希望。

这是从我的仪表板控制器调用 (redirect_to) 时 root_path 的样子的图片。

这一定是我的 root_path 的设计。 (包括布局)。 请注意,URL 相同,但未呈现布局。但是当我刷新页面时,它会显示布局。

【问题讨论】:

  • 每种情况下呈现哪种布局?您希望在每种情况下呈现哪种布局?
  • 请记住,redirect_to 总是会创建一个新请求。因此,将使用哪种布局取决于新请求将前往哪个控制器。
  • 据我所知。如果控制器被调用。它将呈现该控制器的布局?是对的吗?。我试图调用具有 login_layout 的登录控制器。但它不会呈现 login_layout
  • 我已经编辑了帖子,请查看包含的图片显示布局未呈现。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

我找到了窍门,它是 Turbolinks。我在我的 application.js 和 gem 文件中删除了 turbolinks,它就像一个魅力。布局没有改变,因为被调用的特定布局的 CSS 没有改变。当应用程序重定向到登录控制器时,css 必须是 login.self?etc.etc。但它仍然作为仪表板的 css。

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 2014-09-07
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多