我使用awesome_nested_set和一个名为Pages的表进行了非常简单的网站设置。
我希望能够在创建和更新页面时在管理员中选择不同的布局。我设想的是Pages表单上的下拉菜单,允许我选择布局/模板。
我唯一了解布局的是你需要将它们添加到/ views / layouts /并指定控制器顶部的布局。我需要一种在应用程序内部基于每页管理布局的方法。
这甚至可能吗?如果是这样,你能否在高层次上解释如何做到这一点,以便我有一个起点?
修改
这样的事情:
答案 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
这就是你要找的东西吗?