Ruby on Rails - 如何在管理界面中管理布局?

时间:2010-12-07 04:35:19

标签: ruby-on-rails ruby

我使用awesome_nested_set和一个名为Pages的表进行了非常简单的网站设置。

我希望能够在创建和更新页面时在管理员中选择不同的布局。我设想的是Pages表单上的下拉菜单,允许我选择布局/模板。

我唯一了解布局的是你需要将它们添加到/ views / layouts /并指定控制器顶部的布局。我需要一种在应用程序内部基于每页管理布局的方法。

这甚至可能吗?如果是这样,你能否在高层次上解释如何做到这一点,以便我有一个起点?

修改

这样的事情:
alt text

2 个答案:

答案 0 :(得分:4)

您可以通过提供:layout键来轻松更改渲染时的布局:

def some_action
   #... stuff
   render "some_action", :layout => "custom_layout"
end

您还可以在控制器定义中将布局设置为符号,控制器将运行相关方法来决定选择哪种布局

class UsersController < ApplicationController
  layout :decide_layout

  private
    def decide_layout
       some_boolean ? "layout1" : "layout2"
    end
end

如果您不希望方法远离用法,也可以用proc替换符号。最后,您还可以在动作本身中调用#layout。

答案 1 :(得分:1)

假设您的页面模型中的views/layouts中的文件名为one_column.html.erb,two_column.html.erb等,以及名为layout的属性,您可以这样做:

def show
  @page = Page.find(params[:id])
  render :action => "show", :layout => @page.layout
end

这就是你要找的东西吗?