The best approach for contiguity is generally to coassemble if you have sufficient resources. Some assemblers (HipMer/MetaHipMer, Ray, and Omega/Disco) can distribute that to spread the memory use across multiple nodes... since you've tried Ray, you might try the others too and see if they give better results. For a single node, we've found Megahit gives the best results with the lowest resource consumption.
You can also try approaches such as binning (using e.g. Metabat) and then assembling just reads that map to each individual bin. Normalization, error-correction, and/or discarding low-depth reads can also improve assemblies. With Ray and Disco, both error-correction and merging paired reads prior to assembly increases continuity.
But in general it's not a solved problem, so you'll have to experiment a lot! Don't expect great continuity, though; complex metagenomes often yield an L50 (length) of 200bp or less.
Note that you may be able to bin the raw reads using a binning tool based on depth covariance if the 27 samples are different (different conditions, location, time, etc).