class ActionDispatch::Routing::Mapper

Public Instance Methods

hancock_cms_faq_routes(config = {}) click to toggle source
# File lib/hancock/faq/routes.rb, line 3
def hancock_cms_faq_routes(config = {})
  routes_config = {
    use_questions_path: true,
    use_categories_path: true,
    use_faq_path: true,
    faq_path: '/',
    faq_scope: '/faq',
    classes: {
      questions: :questions,
      categories: :categories,
      faq_controller: :categories
    },
    paths: {
      questions: :questions,
      categories: :categories
    },
    pagination: {
      questions: true,
      categories: true,
      category_questions: true
    },
    actions: {
      questions: [:show, :create],
      categories: [:show],
    }
  }
  routes_config.deep_merge!(config)

  generate_hancock_faq_user_routes(routes_config)
  generate_hancock_faq_cms_routes(routes_config)
end

Private Instance Methods

generate_hancock_faq_cms_routes(routes_config) click to toggle source
# File lib/hancock/faq/routes.rb, line 58
def generate_hancock_faq_cms_routes(routes_config)
  scope module: 'hancock' do
    scope routes_config[:faq_scope], module: 'faq' do
      if routes_config[:use_questions_path] and !routes_config[:classes][:questions].nil?
        resources routes_config[:classes][:questions].to_sym, only: routes_config[:actions][:questions], path: routes_config[:paths][:questions], as: :hancock_faq_questions do
          get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:questions]
        end
        get "sent"           => "#{routes_config[:classes][:questions]}#sent"
        get "update_captcha" => "#{routes_config[:classes][:questions]}#update_captcha"
      end

      if routes_config[:use_categories_path] and !routes_config[:classes][:categories].nil?
        resources routes_config[:classes][:categories].to_sym, only: routes_config[:actions][:categories], path: routes_config[:paths][:categories], as: :hancock_faq_categories do
          get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:categories]
          get 'questions(/page/:page)', action: :items, on: :member, as: :questions if routes_config[:pagination][:category_questions]
        end
      end
      if routes_config[:use_faq_path] and !routes_config[:classes][:faq_controller].nil?
        get "#{routes_config[:faq_path]}" => "#{routes_config[:classes][:faq_controller]}#index", as: :hancock_faq
      end
    end
  end
end
generate_hancock_faq_user_routes(routes_config) click to toggle source
# File lib/hancock/faq/routes.rb, line 37
def generate_hancock_faq_user_routes(routes_config)
  if !routes_config[:use_questions_path] and !routes_config[:classes][:questions].nil?
    resources routes_config[:classes][:questions].to_sym, only: routes_config[:actions][:questions], path: routes_config[:paths][:questions] do
      get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:questions]
    end
    get "sent"           => "#{routes_config[:classes][:questions]}#sent"
    get "update_captcha" => "#{routes_config[:classes][:questions]}#update_captcha"
  end

  if !routes_config[:use_categories_path] and !routes_config[:classes][:categories].nil?
    resources routes_config[:classes][:categories].to_sym, only: routes_config[:actions][:categories], path: routes_config[:paths][:categories] do
      get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:categories]
      get 'questions(/page/:page)', action: :questions, on: :member, as: :questions if routes_config[:pagination][:category_questions]
    end
  end

  if !routes_config[:use_faq_path] and !routes_config[:classes][:faq_controller].nil?
    get "#{routes_config[:faq_path]}" => "#{routes_config[:classes][:faq_controller]}#index"
  end
end