def create_resources_url_helpers!
resource_segments, resource_ivars = [], []
resource_config = self.resources_configuration[:self]
singleton = resource_config[:singleton]
uncountable = !singleton && resource_config[:route_collection_name] == resource_config[:route_instance_name]
polymorphic = self.parents_symbols.include?(:polymorphic)
unless resource_config[:route_prefix].blank?
if polymorphic
resource_ivars << resource_config[:route_prefix].to_s.inspect
else
resource_segments << resource_config[:route_prefix]
end
end
self.parents_symbols.each do |symbol|
if symbol == :polymorphic
resource_ivars << :parent
else
config = self.resources_configuration[symbol]
if config[:singleton] && polymorphic
resource_ivars << config[:instance_name].inspect
else
resource_segments << config[:route_name]
end
if !config[:singleton]
resource_ivars << "@#{config[:instance_name]}""@#{config[:instance_name]}"
end
end
end
collection_ivars = resource_ivars.dup
collection_segments = resource_segments.dup
unless parents_symbols.empty?
generate_url_and_path_helpers nil, :parent, resource_segments, resource_ivars
generate_url_and_path_helpers :edit, :parent, resource_segments, resource_ivars
end
collection_segments << resource_config[:route_collection_name]
resource_segments << resource_config[:route_instance_name]
resource_ivars << "@#{resource_config[:instance_name]}""@#{resource_config[:instance_name]}"
if singleton
collection_segments.pop
resource_ivars.pop
if polymorphic
resource_ivars << resource_config[:instance_name].inspect
new_ivars = resource_ivars
end
elsif polymorphic
collection_ivars << '(@_resource_class_new ||= resource_class.new)'
end
if uncountable
collection_segments << "#{collection_segments.pop}_index""#{collection_segments.pop}_index"
end
generate_url_and_path_helpers nil, :collection, collection_segments, collection_ivars
generate_url_and_path_helpers :new, :resource, resource_segments, new_ivars || collection_ivars
generate_url_and_path_helpers nil, :resource, resource_segments, resource_ivars
generate_url_and_path_helpers :edit, :resource, resource_segments, resource_ivars
if resource_config[:custom_actions]
[*resource_config[:custom_actions][:resource]].each do | method |
generate_url_and_path_helpers method, :resource, resource_segments, resource_ivars
end
[*resource_config[:custom_actions][:collection]].each do | method |
generate_url_and_path_helpers method, :resources, collection_segments, collection_ivars
end
end
end