У меня есть модальное окно, о котором вам нужно сообщить об ошибке. Итак, у меня есть HTML-код с этим окном
<div class="modal">
<div id="modal-6">
<%#= render @p::ErrorReport %>
<div class="box_m box_m_middle" style="margin: 0 auto;">
<div class="report_error">
<div class="name">Report an error</div>
<div class="arcticmodal-close close"></div>
<p class="info_block">Some info block</p>
<div class="error_explanation">Email is wrong</div>
<div class="message_send">Message sent</div>
<p class="thanks">Thank you!</p>
<div class="form">
<%= form_for @image, url: error_create_url, method: :post, remote: true do |f| %>
<div class="row">
<div class="box1 blocks">
<%= f.label :name, class: "label" %>
<%= f.text_field :user, class:"int int2", placeholder: "" %>
</div><!--
/--><div class="box2 blocks">
<%= f.label :Email, class: "label" %>
<%= f.text_field :email, class:"int int2", placeholder: "" %>
</div>
</div>
<div class="row">
<%= f.label :Message, class: "label" %>
<%= f.text_area :message, class:"int int2", placeholder: "Please write about your problem" %>
</div>
<div class="rows">
<div class="box1 blocks">
<div class="file">
<!-- <div>Attach file</div> -->
<i class="i i_paper_clip"></i>
<%= f.file_field :file , class: 'choose_file' %>
<img id="error_report_image">
</div>
</div><!--
/--><div class="box2 blocks">
<%= f.submit "Send", class: 'btn btn_middle btn_radius5' %>
</div>
</div>
<% end %>
</div>
</div>
</div>
</div>
</div>
У меня есть js-код, который обрабатывает Ajax из этого модального окна.Чтобы использовать Ajax, я использую remote: true.
function error_report_init(){
var modal6 = $('#modal-6')
var incorrect_mail = $('.error_explanation')
error.click(function(){
error_show()
})
$('body').on('ajax:success', function(data, status, xhr) {
if (status == 'ok') {
console.log('status: ', status)
incorrect_mail.hide()
modal6.find('.form').hide()
modal6.find('.report_error .message_send').show()
modal6.find('.report_error .thanks').show()
modal6.find('.info_block').hide()
modal6.find('.name').hide()
} else {
incorrect_mail.show()
}
})
$('body').on('ajax:error', function(data, status, xhr) {
})
}
И контроллер
class Desktop::Vision::ErrorController < CatalogController
domain_layout 'page_screen'
def form
@image = Image.new
end
def create
@image = Image.new(image_params)
if @image.save
::Mailer::FromSite.error_report(@image).deliver_later
# Mailer::FromSite.error_report_alias(@image).deliver_later
render_status 'ok'
else
render_status @image.errors.full_messages
end
end
end
def reported
end
private
def image_params
params.require(:image).permit(:user, :email, :message, :file)
end
def render_status status
render plain: status
return
end
end
И проблема в том, что, если я пытаюсь заполнить поля, все идет хорошо, и я получаюдругое модальное окно с: «Сообщение отправлено». Но когда я пытаюсь прикрепить какой-то файл, все идет плохо, и удаленный: true работает очень странно. Потому что я получаю не модальное окно, и получаю только ответ контроллера на другой новой странице: «render_status'ok' "или" render_status @ image.errors.full_messages "(если адрес электронной почты неверен) и Ajax не работает.Я не знаю, почему Ajax не работает, когда я пытаюсь прикрепить файл