Aut*_*act 5 layout views ruby-on-rails
以下是我的应用程序布局文件
.container_12.clearfix
= render :partial => 'shared/flashes'
.grid_8
= render :partial => 'shared/search'
= yield
.grid_4
= yield(:sidebar)
Run Code Online (Sandbox Code Playgroud)
它必须是网格,一个用于内容,另一个用于侧边栏.现在我正在创建一个登录页面,其中我不想显示我的侧边栏(只是单个网格.我可以简单地创建新的布局,其中.grid_12 div作为单个网格.
但这让我有2个应用程序布局.如何使相同的应用程序布局条件化以产生侧边栏?
如果使用侧边栏,它将与上面的相同,只是一个.grid_12,如下所示
.container_12.clearfix
= render :partial => 'shared/flashes'
.grid_12
= render :partial => 'shared/search'
= yield
Run Code Online (Sandbox Code Playgroud)
您可以检查内容是否:sidebar存在,如果存在则渲染侧边栏。Rails 2.3.5 将有一个content_for?方法。与此同时,你可以使用我的有用宝石。
- if has_content?(:sidebar)
.grid_8
= render :partial => 'shared/search'
= yield
.grid_4
= yield(:sidebar)
- else
.grid_12
= render :partial => 'shared/search'
= yield
Run Code Online (Sandbox Code Playgroud)
否则,您可以假设 if :sidebar == false 则没有侧边栏。
def sidebar(enable = true, &block)
if enable
content_for :sidebar, &block
else
@fullpage = true
end
end
def fullpage?
!!@fullpage
end
- if fullpage?
.grid_12
= render :partial => 'shared/search'
= yield
- else
.grid_8
= render :partial => 'shared/search'
= yield
.grid_4
= yield(:sidebar)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Rails 3.x,请检查类似问题的答案以获得正确的解决方案。上面的解决方案不适用于 Rails 3。
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |