Если я правильно понимаю, вы пытаетесь передать AJAX в действие show
в вашем контроллере. Это очень ОБОБЩЕННЫЙ ответ, поскольку вы не включили ни один из своих кодов HTML, и похоже, что у вас нет кнопки для запуска AJAX. Но я постараюсь указать вам правильное направление. Вам нужно сделать что-то в общих чертах:
var full_base64 = "data:image/jpeg;base64," + base64;
$.ajax({
data: 'base64=' + full_base64,
type: 'POST',
url: "/videos/my_ajax_upload"
});
Это отправит ваш AJAX вызов в метод контроллера, который я назвал my_ajax_upload
, но вы можете вызывать его как угодно. В вашем контроллере вам понадобится что-то вроде:
def my_ajax_upload
@video.update(base_64: params[:base64])
respond_to do |format|
format.js {render :action => "base_64_response" }
end
end
Это отвечает на начальный вызов AJAX, сохраняя параметр, отправленный вами в БД, и отвечая, вызывая файл с именем base_64_response.js.erb
, который может выглядеть как-то например:
$('#pic_upload').html('<%= escape_javascript(render :partial => 'base_64_response') %>');
, который будет отображать файл HTML с именем base_64_response.html.erb
, который должен содержать код html, который вы хотите отобразить на странице, которая его назвала.
<div id="pic_upload">
<%= @base64 =>
</div>
Цикл равен load page
-> do something to trigger AJAX call to controller method
-> process AJAX call with controller method
-> render JS file
-> JS file replaces div in page with new html
Возможно, вам нужно больше узнать о том, как AJAX работает в Rails. Этот RailsCast может помочь http://railscasts.com/episodes/136-jquery-ajax-revised?view=asciicast