路由Dashboard Post和Post的最佳实践

时间:2014-11-18 18:12:20

标签: ruby-on-rails ruby-on-rails-4 routes

我有两种布局:

  • 仪表板(记录的用户可以添加/编辑/删除新帖子)
  • 公开视图(任何人都可以阅读帖子)

我想得到像以下网址: dashboard_post_path 和 的 post_path

但我不想拥有两个不同的控制器(例如 PostController DashboardPostController ),因为我想共享相同的代码并仅切换布局(' 信息中心'布局或' 默认'布局)。 我试过这个

namespace :dashboard do 
      resources :posts
    end

但我得到

enter image description here

因为它查找信息中心/帖子#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

1 个答案:

答案 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 

你看起来像这样吗?