In this instance I would model it using curves. One of the ways of doing this would be using the array modifier and a curve modifier, to map one curve onto another.
First model the general profile of the 'rib' that you want replicated across the shape. We want this to be a curve for later, so you can do this as either a curve immediately, or model it as a few edges and then convert it to a curve when you're done.
You can do this by right-clicking on the mesh in object mode and selecting Convert To > Curve:
Then, add a separate BezierCircle, this will be the 'big shape' that your ribs will run along:
Going back to your rib curve, use an array modifier with a relative offset of 1 on the X axis to make a series of ribs in a line:
Finally add a curve modifier to the rib, selecting the 'big shape' as the Curve Object. In this case a Bezier circle.
Note: Here, depending on your file, you may need to try the different 'Deform Axis' till you find the one that works, in this example the default X worked.
You may need to move the rib object on different axis to get it to sit on the curve correctly as well.
Adjust the array count to fill the entire circle, clicking 'merge' and 'first and last copies' will make the shape join up at the ends.:
Finally select the rib object, we can add thickness and geometry to the curve in the curve properties tab, using the depth and extrude sliders:
You can end the modifier stack with a subdivision surface modifier for a nice finish:
I hope this helps!