2013-05-08 4 views
6

레일스로 블로그를 만들고 있습니다. 내가 한 일은 관리 영역입니다. (현재까지 내가 애플리케이션에서 가지고있는 유일한 것입니다). Bootstrap을 사용하여 모든 페이지를 빠르게 디자인하고 인증을 위해 Devise를 사용했습니다.레일스 애플리케이션에서 관리 영역 생성

모든 모델, 뷰 및 컨트롤러에서 scaffolding을 사용하고 AdminPost 모델을 생성했습니다.

문제는 이제 실제 블로그를 만들고 /admin 경로를 사용하여 관리 패널에 액세스해야한다는 것입니다. 예를 들어 새 게시물을 만들려면 http:/mysite/admin/posts/new에 액세스해야합니다.

또 다른 문제는 공개 블로그 페이지 (부트 스트랩이 아님)에서 완전히 다른 디자인을 갖게되며 물론 다른 컨트롤러,보기 및 경로를 갖게된다는 것입니다.

그래서 무엇을 할 수 있습니까?

답변

15

Admin 모델을 제거하는 것이 좋습니다 (예 : 모델보다 네임 스페이스 같음). admin 승/접두어이 블록 내부의 모든 경로의 원인이됩니다

namespace :admin do 
    resources :posts 
end 

이 : 내가 대신처럼 routes.rb 파일에서 :admin 네임 스페이스를 만들 것입니다. 따라서 관리자 측에서 게시물을 편집하기위한 URL은 admin/posts/:id/edit이됩니다.

다음은 모든 관리자 컨트롤러가 상속하는 AdminController을 제안합니다. 이렇게하면 새 레이아웃을 지정할 수 있습니다. 그런 다음 당신은 Admin::PostsController

app/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 

응용 프로그램/뷰를 만들 수 있습니다 /admin/posts/index.html.erb

0

블로그 페이지가 공용이어야한다고 가정합니다. 즉, 블로그 페이지를 보려면 비 인증이 필요합니다. 나머지는 이미 해당 지역을 보호하기 위해 사용하고 있습니다.

다른 템플릿은 매우 쉽기 때문에 2 개의 레이아웃을 만들고 컨트롤러에서 원하는 레이아웃을 설정할 수 있습니다.

관련 문제