سؤال

أحاول إنشاء وحدة سجل الزوار داخل موقع Rails باستخدام إطار عمل Alchemy CMS.لا يبدو أن هناك الكثير من التوثيق لبناء الوحدة النمطية باستخدام Alchemy، لذا فقد خرجت للتو هذه الصفحة.

لقد قمت بإنشاء وحدتي تحكم، واحدة سيستخدمها المسؤولون تسمى Guestbook_controller.rb ووضعتها ضمن التطبيق/وحدات التحكم/المشرف

module Admin
  class GuestbookController < Alchemy::Admin::ResourcesController
    def index
      "index"
    end
  end
end

وآخر يمكن للضيف الوصول إليه ضمن app/controllers/guestbook_controller.rb

class GuestbookController < ActionController::Base
  def index
    "index"
  end
end

أنوي أن يتم عرض منشورات سجل الزوار ضمن إحدى الصفحات الموجودة بالفعل داخل Alchemy وسيتم عرض نموذج أيضًا على هذه الصفحة.

يبدو نموذج سجل الزوار كما يلي:

class GuestbookEntry < ActiveRecord::Base
  attr_accessible :location, :message, :name
end

يبدو ملف المسارات الخاص بي كما يلي:

resources :guestbook

namespace :admin do
  resources :guestbook
end

mount Alchemy::Engine => '/'

ولدي ملف يسمى Authorization_rules.rb ضمن التكوين الذي يبدو كما يلي:إذن تفعل

  role :admin do
    has_permission_on :guestbook, :to => [:manage]
  end

end

المشكلة الأولى التي أواجهها هي أن الانتقال إلى المسار /admin/guestbook يعطيني الخطأ "أنت غير مصرح له"، ولكن يجب استدعاء ملف قواعد التفويض بواسطة أداة التهيئة الخاصة بي، فلماذا أتلقى هذا الخطأ؟

# Registering guestbook module in Alchemy CMS
Alchemy::Modules.register_module(YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/guestbook_module.yml')))

# Loading authorization rules and register them to auth engine instance
Alchemy::AuthEngine.get_instance.load(File.join(File.dirname(__FILE__), '../..', 'config/authorization_rules.rb'))
هل كانت مفيدة؟

المحلول

مشكلة الترخيص سهلة.كل ما عليك فعله هو أن تكتب:

has_permission_on :admin_guestbook, :to => [:manage]

شيء آخر لاحظته:يجب أن يرث برنامج GuestbookController الخاص بك من Alchemy::BaseController.

ويجب عليك التأكد من أن صفحتك التي تريد عرض إدخالات سجل الزوار عليها، يجب ألا يتم تخزينها مؤقتًا بواسطة Alchemy.يمكنك القيام بذلك باستخدام cache: false الخيار في page_layouts.yml لتخطيط صفحتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top