I find it kind of annoying that Spine doesn't allow me to do this natively.
However, you
can send params to your url with the fetch() method. e.g. Post.fetch({ data: 'foo=bar' }) will append those params to the url. (I also tried sending data as an object itself but for some reason it isn't working. Maybe an oversight by me or a bug? For example { data: { foo: 'bar' } } doesn't work.
It could be argued that your API should not use nested routes. However, it's probably more convenient to work with existing routes.
Personally, I've changed up my approach. Rather than use nested routes I will just go based on the resource name.
I'm using Padrino, which gives me the option to mount multiple apps within a single project. I'm not sure if Rails allows you to do this, or how easily. I've created a separate app just for the API. Instead of doing for example board/1/posts, I'll do
api.domain.com/posts?board_id=1. I'll extract any duplicative functionality into a global helper if it pops up.
Maybe this seems silly, but I think there's some validity to it. For one, most of my routes that serve HTML are purposely contrived to look pretty to the end user, and sometimes obfuscate what resource they represent. It's probably just not a good idea to use those same routes to serve JSON as part of a RESTful API. Secondly, there are sometimes some subtleties in the way JSON is served versus HTML; so it kind of makes sense to separate the handling of both.
Still, I think Spine could be better with its URLs, and I might not have even considered this route had I not been backed into this corner. Although I think my approach to the problem is still sound, and may even be better design for my project.