Вы правы, большинство браузеров ограничивают длину URL.Ограничение на IE8 / 9 составляет 2083 символа.Даже если ваш конкретный браузер имеет более высокий предел, многие серверы также ограничивают длину URL (ограничение по умолчанию для Apache составляет около 8 КБ).Было бы лучше отправить изображение в виде запроса POST с данными в теле POST.
Я бы использовал jQuery для отправки данных JSON на сервер.В контроллере, если он настроен правильно, вам не нужно будет что-то делать для анализа JSON.ActiveSupport распознает тип содержимого и автоматически разбирает его в хэше params.
На самом деле размещение данных будет зависеть от того, какую библиотеку JavaScript вы используете.Вот пример в jQuery, который вы, вероятно, захотите подключить к событию onclick кнопки отправки.Это предполагает, что у вас есть именованный маршрут с именем process_image.По вашему мнению, этот код будет отображаться.
$.post(<%= process_image_path %>, { b64_img: "your_base64_image_data" });
В вашем контроллере вы можете получить доступ к опубликованным данным с помощью параметров [: b64_img].Если вы хотите вернуть что-то из контроллера обратно клиенту, вы можете сделать это в контроллере:
render :json => @model_object
и изменить вызов jquery так, чтобы вы могли что-то сделать с возвращаемым значением:
$.post(<%= process_image_path %>, { b64_img: "your_base64_image_data" },
function(data) {
// do something with the data returned by the controller
});
Надеюсь, это поможет.Вы можете прочитать больше о пост-звонке jQuery, который я использовал здесь: http://api.jquery.com/jQuery.post/
Dan