Rails Dropzone & Ajax рендеринг - PullRequest
       0

Rails Dropzone & Ajax рендеринг

0 голосов
/ 03 ноября 2019

У меня есть форма с 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 дней, любая помощь будет приветствоваться, пожалуйста. я уверен, что я не далеко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...