6

我正在使用 Rails 创建一个博客,我做的第一件事是管理区域(现在是我在应用程序中唯一拥有的东西)。我使用 Bootstrap 快速设计所有页面并设计用于身份验证。

对于我使用的所有模型、视图和控制器scaffolding,我同时生成了AdminPost模型。

问题是现在我必须创建 REAL 博客并使用/admin路由访问管理面板。例如,要创建一个新帖子,我应该访问http:/mysite/admin/posts/new.

另一个问题是我将在公共博客页面(不是 Bootstrap)中有一个完全不同的设计,当然我会有不同的控制器、视图和路由。

那么,可以做些什么呢?

4

2 回答 2

15

我建议删除Admin模型,因为在您的情况下,它看起来更像是一个命名空间而不是一个模型。我会:admin在您的routes.rb文件中创建一个命名空间,例如:

namespace :admin do
   resources :posts
end

这将导致该块内的所有路由都以 w/ 为前缀admin。因此,在管理员端编辑帖子的 URL 将是admin/posts/:id/edit.

接下来,我建议AdminController您创建一个所有管理员控制器都将从中继承的。这样您就可以指定新的布局。然后你可以创建一个Admin::PostsControlleratapp/controllers/admin/posts_controller.rb

应用程序/控制器/admin_controller.rb

class AdminController < ApplicationController
  layout 'admin'
end

应用程序/控制器/管理员/posts_controller.rb

class Admin::PostsController < AdminController
  def index
    # admin/posts
  end
end

app/views/admin/posts/index.html.erb

Hello from the admin/posts view!
于 2013-05-08T15:31:05.313 回答
0

我想博客页面应该是公开的,这意味着需要非身份验证才能查看它。对于其余部分,您已经在使用设计来保护该区域。

对于不同的模板非常简单,您可以创建 2 个布局并在控制器中设置所需的布局。

于 2013-05-08T15:31:47.733 回答