2

アクションでrenderを書いてみたのですが、レイアウトの挙動が違うのですがなぜですか?

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

パーシャルの要点は、ビューの一部のみをレンダリングし、レイアウトなしでレンダリングすることです。

パーシャルをレンダリングするだけの、shared/full_panel_show などの新しいビュー (およびコントローラーのアクション) を作成することをお勧めします。

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

コントローラーで新しいビューをレンダリングします。

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

show ビューで何をドーピングしているかによっては、代わりにそのビューからパーシャルをレンダリングすることもできます。

于 2010-02-16T13:52:26.087 に答える
0

コントローラーでレイアウトを使用してパーシャルをレンダリングするソリューションがあります

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

「部分」メソッドを削除してからアンダースコアを追加するだけです。

于 2014-09-25T07:18:48.077 に答える