Метод переопределения ресурсов Rails Routing создает дополнительные действия RESTful

В маршрутах.rb:

  namespace :admin, :format => false do
    resources :activities
    resources :categories
    resources :charities
  end 

Добавьте во все map.resources дополнительные действия RESTful csv_export:

Создайте файл initilizer/mapper.rb и добавьте модуль ActionDispatch::Routing::Mapper::Resources

module ActionDispatch::Routing::Mapper::Resources
  # Add csv_export to all resources as default action
  def resources(*resources, &block)
    options = resources.extract_options!.dup

    if apply_common_behavior_for(:resources, resources, options, &block)
      return self
    end

    resource_scope(:resources, Resource.new(resources.pop, options)) do
      yield if block_given?

      concerns(options[:concerns]) if options[:concerns]
      collection do
        get :csv_export ,defaults: { format: 'csv' } if   @scope[:path].include?("/admin")
        get  :index if parent_resource.actions.include?(:index)
        post :create if parent_resource.actions.include?(:create)
      end

      new do
        get :new
      end if parent_resource.actions.include?(:new)

      set_member_mappings_for_resource
    end

    self
  end
end

0 ответов

Другие вопросы по тегам