Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Dashbord驿站和驿站的最佳路线_Ruby On Rails_Ruby On Rails 4_Routes - Fatal编程技术网

Ruby on rails Dashbord驿站和驿站的最佳路线

Ruby on rails Dashbord驿站和驿站的最佳路线,ruby-on-rails,ruby-on-rails-4,routes,Ruby On Rails,Ruby On Rails 4,Routes,我有两种布局: 仪表板(登录用户可以在其中添加/编辑/删除新帖子) 公共视图(任何人都可以阅读帖子) 我希望得到如下URL: 仪表板\u post\u路径和 发布路径 但我不想有两个不同的控制器(例如后控制器和仪表板后控制器),因为我想共享相同的代码,只切换布局(“仪表板”布局或“默认”布局)。 我试过这个 namespace :dashboard do resources :posts end 但我明白了 因为它查找仪表板/帖子#索引控制器 class Posts

我有两种布局:

  • 仪表板(登录用户可以在其中添加/编辑/删除新帖子)
  • 公共视图(任何人都可以阅读帖子)
我希望得到如下URL: 仪表板\u post\u路径发布路径

但我不想有两个不同的控制器(例如后控制器仪表板后控制器),因为我想共享相同的代码,只切换布局(“仪表板”布局或“默认”布局)。 我试过这个

namespace :dashboard do 
      resources :posts
    end
但我明白了

因为它查找仪表板/帖子#索引控制器

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]
  before_filter :authenticate_user!, only: [:edit, :update, :destroy, :new]
  layout 'dashboard'

 //...
end
class PostsController
您可以编写如下条件布局

条件布局

在控制器级别指定的布局支持: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 
类事件控制器

你看起来像这样吗?

好的,但是我可以检测到用户是在“仪表板”上还是默认设置上?我不知道,你能详细解释一下吗。看看我在问题上发布的代码。在PostController中,我如何检测我是否在“仪表板”案例中?