lib/active_admin/resource/routes.rb in activeadmin-1.0.0.pre4 vs lib/active_admin/resource/routes.rb in activeadmin-1.0.0.pre5
- old
+ new
@@ -2,30 +2,38 @@
class Resource
module Routes
# @param params [Hash] of params: { study_id: 3 }
# @return [String] the path to this resource collection page
# @example "/admin/posts"
- def route_collection_path(params = {})
- RouteBuilder.new(self).collection_path(params)
+ def route_collection_path(params = {}, additional_params = {})
+ route_builder.collection_path(params, additional_params)
end
+ def route_batch_action_path(params = {}, additional_params = {})
+ route_builder.batch_action_path(params, additional_params)
+ end
+
# @param resource [ActiveRecord::Base] the instance we want the path of
# @return [String] the path to this resource collection page
# @example "/admin/posts/1"
- def route_instance_path(resource)
- RouteBuilder.new(self).instance_path(resource)
+ def route_instance_path(resource, additional_params = {})
+ route_builder.instance_path(resource, additional_params)
end
- def route_edit_instance_path(resource)
- RouteBuilder.new(self).edit_instance_path(resource)
+ def route_edit_instance_path(resource, additional_params = {})
+ route_builder.edit_instance_path(resource, additional_params)
end
# Returns the routes prefix for this config
def route_prefix
namespace.module_name.try(:underscore)
end
+ def route_builder
+ @route_builder ||= RouteBuilder.new(self)
+ end
+
def route_uncountable?
config = resources_configuration[:self]
config[:route_collection_name] == config[:route_instance_name]
end
@@ -35,46 +43,59 @@
class RouteBuilder
def initialize(resource)
@resource = resource
end
- def collection_path(params)
+ def collection_path(params, additional_params = {})
route_name = route_name(
resource.resources_configuration[:self][:route_collection_name],
suffix: (resource.route_uncountable? ? "index_path" : "path")
)
- routes.public_send route_name, *route_collection_params(params)
+ routes.public_send route_name, *route_collection_params(params), additional_params
end
+ def batch_action_path(params, additional_params = {})
+ route_name = route_name(
+ resource.resources_configuration[:self][:route_collection_name],
+ action: :batch_action,
+ suffix: (resource.route_uncountable? ? "index_path" : "path")
+ )
+
+ query = params.slice(:q, :scope)
+ query = query.permit! if query.respond_to? :permit!
+ query = query.to_h if Rails::VERSION::MAJOR >= 5
+ routes.public_send route_name, *route_collection_params(params), additional_params.merge(query)
+ end
+
# @return [String] the path to this resource collection page
# @param instance [ActiveRecord::Base] the instance we want the path of
# @example "/admin/posts/1"
- def instance_path(instance)
+ def instance_path(instance, additional_params = {})
route_name = route_name(resource.resources_configuration[:self][:route_instance_name])
- routes.public_send route_name, *route_instance_params(instance)
+ routes.public_send route_name, *route_instance_params(instance), additional_params
end
# @return [String] the path to the edit page of this resource
# @param instance [ActiveRecord::Base] the instance we want the path of
# @example "/admin/posts/1/edit"
- def edit_instance_path(instance)
+ def edit_instance_path(instance, additional_params = {})
path = resource.resources_configuration[:self][:route_instance_name]
route_name = route_name(path, action: :edit)
- routes.public_send route_name, *route_instance_params(instance)
+ routes.public_send route_name, *route_instance_params(instance), additional_params
end
private
attr_reader :resource
def route_name(resource_path_name, options = {})
suffix = options[:suffix] || "path"
route = []
- route << options[:action] # "edit" or "new"
+ route << options[:action] # "batch_action", "edit" or "new"
route << resource.route_prefix # "admin"
route << belongs_to_name if nested? # "category"
route << resource_path_name # "posts" or "post"
route << suffix # "path" or "index path"