我有两种布局:
我想得到像以下网址: dashboard_post_path 和 的 post_path
但我不想拥有两个不同的控制器(例如 PostController 和 DashboardPostController ),因为我想共享相同的代码并仅切换布局(' 信息中心'布局或' 默认'布局)。 我试过这个
namespace :dashboard do
resources :posts
end
但我得到
因为它查找信息中心/帖子#index 控制器
class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
before_filter :authenticate_user!, only: [:edit, :update, :destroy, :new]
layout 'dashboard'
//...
end
答案 0 :(得分:2)
你可以写下面的条件布局
条件布局
在控制器级别指定的布局支持:only和:except选项。这些选项采用方法名称或方法名称数组,对应于控制器中的方法名称:
class EventsController < ApplicationController
layout :resolve_layout
def resolve_layout
case action_name
when "show"
"post_layout"
when "index"
"dashboard_layout"
else
"default_layout"
end
end
end
你看起来像这样吗?