【问题标题】:How rails render works in controller? Why something it doesn't use layout?Rails 渲染如何在控制器中工作?为什么它不使用布局?
【发布时间】:2010-02-16 11:01:39
【问题描述】:

我尝试在动作中编写渲染,但布局行为不同,为什么?

def show
   # assuming we have a partial in app/views/shared/_panel_show.html.erb
   #render "shared/_panel_show" # have layout
   #render "/shared/_panel_show" # without layout
   #render "shared/panel_show" # Template is missing
   #render :partial => "shared/panel_show" # without layout
   render :partial => "/shared/_panel_show",:layout => "application" # have layout
end

我想渲染部分并遵循控制器布局。

【问题讨论】:

  • 有什么不同?你不应该这样做吗:render :partial => "/shared/panel_show",:layout => "application" ?
  • 是的,我可以。但我想使用控制器定义的布局。当我更改全局布局时,我不想修改很多地方。

标签: ruby-on-rails layout render partial actioncontroller


【解决方案1】:

partial 的全部意义在于它只渲染视图的一部分,并且在没有任何布局的情况下渲染它。

我建议创建一个新视图(和我们的控制器中的操作),比如 shared/full_panel_show,它只呈现部分视图。

<%= render :partial => 'shared/panel_show' %>

现在在您的控制器中渲染新视图:

def show
  render :action => 'shared/full_panel_show'
end

根据您对显示视图添加的内容,您可以只从它的视图中渲染部分内容。

【讨论】:

  • 如何解释#render "shared/_panel_show" #有布局
【解决方案2】:

我有一个解决方案可以在控制器中使用布局呈现部分

render 'shared/_panel_show', layout: "layouts/application"

只需删除“部分”方法,然后添加下划线。

【讨论】:

    猜你喜欢
    • 2014-11-02
    • 2011-11-07
    • 2011-09-10
    • 1970-01-01
    • 2012-04-27
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多