#javascript #ruby-on-rails
#javascript #ruby-on-rails
Вопрос:
Я работаю над тестовым проектом, в котором кто-то вводит URL-адрес в форму, и я использую активное задание для получения изображения предварительного просмотра open graph protocol, а затем я хочу перезагрузить страницу с помощью javascript, чтобы показать изображение после завершения работы.
У меня все работает, кроме перезагрузки:
Контроллер:
def open_graph_preview
@new_preview = Preview.new
@preview = Preview.last
# sends newly created Preview to Job
@job = FindOpenGraphImageJob.perform_later(@preview)
# begins status check on currently running Job
@job_status = ActiveJobStatus.fetch(@job.job_id)
end
Задание:
def perform(preview)
# Uses Faraday to get all info on the given URL
response = Faraday.get(preview.url)
# Uses OGP gem to parse the meta data from Faraday response
open_graph = OGP::OpenGraph.new(response.body)
@preview = Preview.find(preview.id)
# Updates the image_url with the open graph image url
@preview.update_attribute :image_url, open_graph.image.url
end
Вид:
<h1>Open Graph Protocol Preview</h1>
<div class="d-flex justify-content-center">
<%= form_with(model: @new_preview, local: true) do |form| %>
<div class="field form-group">
<%= form.label :url %>
<%= form.text_field :url, class: 'form-control' %>
</div>
<div class="actions form-group">
<%= form.submit %>
</div>
<% end %>
</div>
<div class="d-flex justify-content-center" style="padding:50px;">
<img src="<%= @preview.image_url %>">
</div>
Может кто-нибудь, пожалуйста, помочь мне разобраться, как использовать javascript для проверки @job_status
в контроллере и перезагрузки страницы, когда @job_status.completed?
?
Комментарии:
1. Это очень широкий вопрос. Я не уверен, что вы получите помощь, которую ищете. В общем, я делаю что-то вроде этого: (1) прикрепляю
on ajax:success
обработчик к моей форме, (2) отправляю форму через js и возвращаю модал отслеживания статуса, (3) загружаю модал с помощью прикрепленного обработчика, (4) модальные опросы статуса задания (используя счетчик или какой-либо другой визуальный виджет для указания опроса / прогресса), (5) когда задание завершено, modal извлекает HTML blob и загружает в DOM.2. Спасибо за ваш ответ, это неприятная проблема, потому что кажется, что она не должна быть такой широкой или сложной. Но чем больше я понимаю масштаб проблемы, тем больше понимаю, насколько это сложно.
3. Да, я тебя понял. Формат вопросов и ответов не всегда подходит для той стадии, на которой вы находитесь. LMK если вы зациклились на чем-то конкретном или хотите немного пнуть его — я мог бы открыть чат и уделить немного времени, если это поможет.
4. Спасибо, это потрясающе. В настоящее время я пытаюсь использовать ActionCable для решения проблемы, но если это не сработает, я обязательно расскажу вам об этом.
5. Понял. ActionCable был слишком большим скачком для меня на данный момент, поэтому я уклонился от него. Но, дерзайте!!!