7 Stimmen

Rails-Anwendung Admin-Bereich

Ich arbeite an meiner ersten Rails-Anwendung und möchte einen Admin-Bereich erstellen.

Möchte ich meine Views und Controller für den Admin-Bereich und den Rest der Site komplett getrennt halten (d.h. in separaten Verzeichnissen)?

Wie kann ich meine Ansichten/Controller in benutzerdefinierten Verzeichnissen organisieren (wie konfiguriere ich das Routing)?

8voto

nitecoder Punkte 5446

So erstellen Sie Ihre Admin-Controller:

script/generate controller admin/articles

Dann in Ihrer routes.rb-Datei

map.resource :admin do |admin|
  admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles"
end

Sie können dann auf die Indexurl zugreifen:

<%= link_to "Articles Admin", admin_articles_path %>

5voto

Gishu Punkte 130442

Sie können auch die Anwendungen und Controller an ihren üblichen Plätzen belassen und die Rails-Filter um den Zugang zu kontrollieren, und ich denke, das ist es, wonach Sie hier suchen.

Wenn Sie das AWDWR-Buch zur Hand haben, blättern Sie zu Kap. 11, Aufgabe F - Administratives

  • Definieren Sie grundsätzlich eine Autorisierungsmethode in der Anwendung \controllers\application.rb der die Berechtigung prüft und zur Anmeldeseite weiterleitet, wenn er nicht angemeldet ist usw.
  • Markieren Sie Controller, auf die Sie den Zugriff beschränken möchten, mit before_filter s

.

class AdminController < ApplicationController
   before_filter :authorize
   #  ... the rest of the code
end

Dies wird alle Aufrufe von Aktionen, die im AdminController definiert sind, abfangen und sie dazu zwingen, über authorize zu gehen

5voto

Ghoti Punkte 2379
map.namespace :admin do |admin|
  admin.register :controller => 'main', :action => 'register'
  admin.login, :controller => 'main', action => 'login'
  # ...
end

Fügen Sie dies zu den anderen Kommentaren hier über die Autorisierung von Dingen hinzu, und Sie sind weg. Werfen Sie einen Blick auf das restful_authentication-Plugin, um Ihre Benutzerverwaltung zu tun, viel schneller und einfacher als rollen Sie Ihre eigenen.

Das obige Routing geht davon aus, dass sich die Controller und ihre Ansichten in einem Unterverzeichnis namens admin befinden, was meiner Meinung nach das ist, was Sie wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X