【问题标题】:Unable to stop layout from being used in Rails view无法停止在 Rails 视图中使用布局
【发布时间】:2014-05-25 02:07:46
【问题描述】:

我正在尝试在不使用默认应用程序布局 (layouts/application.html.slim) 的情况下在 Bootstrap 模式(正在工作)中显示 Rails 视图。后者不起作用。

我在控制器中为适当的模型设置了以下代码(布局为零):

class FoundItemsController < ApplicationController
  layout nil
  before_action :set_found_item, only: [:show, :edit, :update, :destroy]

我什至尝试通过应用程序控制器对其进行全局设置,但视图仍在以我的网站页眉、页脚等模式加载。

还有什么我应该在这里寻找的吗?

提前致谢。

【问题讨论】:

    标签: ruby-on-rails twitter-bootstrap


    【解决方案1】:

    我发现问题在于我在控制器中使用了它:

    layout nil
    

    代替:

    layout false
    

    成功了。

    【讨论】:

      【解决方案2】:

      在行动:

      render :layout => false
      

      在控制器中:

      class FooController < ApplicationController
          layout false, only: [:show]
      ....
      

      希望能帮到你

      【讨论】:

        【解决方案3】:

        要考虑的其他一点是如何您访问模式。

        如果您使用 ajax,您可以使用 request.xhr? 方法停止所有 layouts 渲染,如下所示:

        #app/controllers/application_controller.rb
        Class ApplicationController < ActionController::Base
           layout Proc.new {|controller| controller.request.xhr? ? false : "application" }
        end
        

        【讨论】:

          【解决方案4】:

          如果您根本不想从 ApplicationController 继承任何东西,而不仅仅是布局,那么您可以像 ApplicationController 那样从 ActionController::Base 继承。

          class FoundItemsController < ActionController::Base
            layout nil
            before_action :set_found_item, only: [:show, :edit, :update, :destroy]
          

          【讨论】:

          • 感谢您的建议,有助于理解这一点。这确实删除了布局,但是我使用应用程序控制器来存储当前用户并需要它。
          猜你喜欢
          • 2011-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多