2011-02-03 75 views
0

我從Rails 2.3.8升級到3.0.3,並注意到我的代碼嵌套佈局不起作用。render:inline =>「<%= yield %>」不工作

在我的主要應用程序的佈局我也行

<%= controller.sub_layout%>

,然後看起來控制器,誰擁有:

def sub_layout 
    render :inline => "<%= yield %>" 
    # or otherwise some partial for the sub-layout 
end 

的問題是,這不會被渲染!如果我在佈局中直接輸入<%= yield%>語句,它確實有效。所以問題是,這裏發生了什麼,我該如何解決?

這對Rails 2.3.8

回答

0

所以大家有更多的在這個背景下,整個子佈局方法基於此博客文章:Sorta Nested Layouts(解決方案在評論部分中給出)。

而不是使一個控制器的方法sub_layout的,其使用任何sublayout控制器需要定義將變量一個的before_filter方法:

def inner_layout 
    @inner_layout = 'layouts/sublayout_partial_name' 
end 

然後在主layout.html.erb(即application.html.erb),在那裏你本來把你的產量聲明:

<%= @inner_layout ? render(:partial => "#{@inner_layout}") : yield %> 

的assumtion是,sublayout部分文件將擁有自己的產量聲明某處。

相關問題