There's an issue with redirect that happen due to either require_ssl or refuse_ssl when the request is coming is not a GET one.
All params are given to redirect_to, this results in all fields being put in querystring on the destination page. This is obviously a security issue and needs to be fixed. A form should not know in advance if the destination resource accepts or refuses SSL.