2

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

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

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

4

2 回答 2

3

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

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

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

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

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

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

于 2010-02-16T13:52:26.087 回答
0

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

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

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

于 2014-09-25T07:18:48.077 回答