У меня есть форма с dropzone для загрузки изображений. Я последовал примеру: Средний: Rails Dropzone Ajax . Пример работает нормально, но я бы хотел обновить партию с помощью AJAX после завершения загрузки. Я изменил код следующим образом:
Контроллер:
class MediaContentsController < ApplicationController
before_action :set_media, only: [:show]
respond_to :html, :js
def index
@media_contents = Media.where(user_id: current_user.id)
end
def create
@media = Media.new(file_name: params[:file], user_id: current_user.id)
if @media.save!
@media_contents = Media.where(user_id: current_user.id)
MediaContentMailer.new_message(@media).deliver_later(wait_until: 1.minute.from_now)
respond_to do |format|
format.js
format.html
end
else
puts 'Hello, the processed failed'
render json: { error: 'Failed to process' }, status: 422
end
end
end
Просмотр:
<div class="card-deck">
<div class="col-md-6" style="padding-top: 30px;">
<%= form_tag('/media_contents', method: :get, class: "dropzone stripe-2", id: "media-dropzone", remote: true) do %>
<input name="authenticity_token" type="hidden" value="<%= form_authenticity_token %>" />
<div class="fallback">
<%= file_field_tag "media", multiple: true%>
</div>
<% end %>
</div>
<div class="col-md-6">
<%= form_tag '/delete_media', method: :delete do %>
<div id="media-contents" class="row">
<%= render :partial => 'media_contents/show', :locals => {:media_contents => @media_contents} %>
<div style="text-align: center; width: 100%;">
<hr>
<%= link_to 'Delete All', delete_all_path, method: :delete, id: 'delete-all', class: 'btn btn-success', disabled: @media_contents.empty? %>
</div>
</div>
<% end %>
</div>
</div>
Create.js.erb
$("#media-contents").html("<%= j render partial: 'media_contents/show', :locals => {:media_contents => @media_contents} %>");
Цель - обновить media_contents / show с помощью _show.html.erb после загрузки, чтобы пользователям не приходилось обновлять страницу. Но я получаю следующую ошибку:
ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/media_contents_controller.rb:15:in `create'
Со строкой 15:
format.js
Я играю с этим в течение 2 дней, любая помощь будет приветствоваться, пожалуйста. я уверен, что я не далеко.