【问题标题】:ruby on rails how to render a page without layout and other head fieldruby on rails 如何在没有布局和其他头字段的情况下呈现页面
【发布时间】:2013-04-03 16:18:55
【问题描述】:
else
  respond_to do |format|
    format.html { render "tabelle/show" }
  end
end    

我想渲染页面......只有该页面中的代码......而不是在 ruby​​ on rails 中添加 <head>...layout 和 <body> 字段。 我只想在页面 tabelle/show.html.haml 中显示代码的结果

【问题讨论】:

标签: ruby-on-rails ruby render


【解决方案1】:

如果您不想指定要使用的视图。

Rails 足够聪明,可以根据您所在的控制器操作知道要使用哪个视图模板。

例如,如果您正在使用 TabellesControllershow 操作,则不需要在控制器操作中指定 render "tabelle/show",因为 Rails 已经假设并会自动尝试在app/views/tabelles/show.html.erb.

因此,如果您坚持使用所有这些默认设置,那么您可以使用以下内容来渲染 而无需 典型的布局模板:

def show
  # Other stuff in your Controller Action.

  render layout: false
end

这将呈现app/views/tabelles/show.html.erb,但不会自动呈现布局模板。

注意。

【讨论】:

    【解决方案2】:

    控制器:

    layout false, only: [:method_name]
    

    这在您使用 render_to_string 时非常有用

    【讨论】:

      【解决方案3】:

      添加

      :layout => false
      

      例子:

      render "tabelle/show", :layout => false
      

      【讨论】:

      • 如果我渲染一个部分,我想显示布局...我直接从控制器渲染它,我做'render partial:'successful_download', locals:{link:@gig .boxlink}' 并且它确实有效,但是布局消失了。如何让它出现?
      【解决方案4】:

      你可以这样做:

      format.html { render "tabelle/show", :layout => false  } 
      

      【讨论】:

      • 您也可以通过在控制器上调用layout false 来在控制器范围内执行此操作: class FooController
      • @MartinSvalin 您确实可以这样做,但这会影响FooController 中的所有操作,看来 OP 对控制布局有更本地化的需求。
      • 是否可以在不指定要使用的视图的情况下进行渲染,例如render layout: false,它会自动使用tabelle 目录中的show.html.erb,但没有典型布局?
      • 原来你可以!
      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多