У меня есть приложение, которое я использую для публикации материалов.Я хочу, чтобы пользователь мог написать мне отзыв, и чтобы он также мог загрузить скриншот.
Я сам написал модель, контроллер и прочее.
<div id="feedback-message" class="feedback-message" style="color: green;">Feedback sent</div>
<span class="label label-info">Name</span><%= text_field_tag :name, "", class: 'form-control' %>
<span class="label label-info">Topic</span>
<select name="topic" id="topic" class="form-control">
<option value="Bug">Bug</option>
<option value="Suggestion">Suggestion</option>
<option value="Other">Other</option>
</select>
<span class="label label-info">Screenshot</span>
<label class="image-upload form-control">
<i class="fa fa-cloud-download" id="upload_button"></i>
<input id="upload_input" type="file" name="feedback[screenshot]"/>
</label>
<span class="label label-info">Message</span> <%= text_area_tag :message, "", class: 'form-control', rows: 3 %>
<hr>
<%= submit_tag 'Submit', id: 'submit-feedback', class: 'btn btn-success center' %>
<script>
$(document).ready(function () {
var msg = document.getElementById('feedback-message');
var submit = $('#submit-feedback');
submit.click(function () {
msg.style.display = 'block';
submit.prop('disabled', true);
setTimeout(function () {
submit.prop('disabled', false);
msg.style.display = 'none';
}, 5000);
$.ajax({
url: '/feedback',
type: 'POST',
data: {
authenticity_token: $('[name="authenticity_token"]').val(),
name: $('#name').val(),
message: $('#message').val(),
topic: $('#topic').val(),
screenshot: $('#upload_input').val(),
},
});
});
});
</script>
Я отображаю его, нажимая на кнопку (выглядит как модальный).
Работал хорошо, прежде чем я попытался реализовать скриншот.Следовал руководству по установке из скрепки и при отправке формы я получаю
Paperclip::AdapterRegistry::NoHandlerError - No handler found for "C:\\fakepath\\wahtdihdijustread.jpeg":
app/controllers/feedback_controller.rb:6:in `create'
Редактировать:
class Feedback < ApplicationRecord
validates :name, presence: true, length: {minimum: 3}
validates :message, presence: true, length: {minimum: 5}
validates :topic, length: {minimum: 3}
has_attached_file :screenshot,
path: '/feedback/:filename',
url: '/feedback/:filename'
validates_attachment_content_type :screenshot, content_type: /^image\/(jpg|jpeg|png)$/, message: 'file type is not allowed (only jpg/jpeg/png images)'
end
Редактировать2:
class FeedbackController < ApplicationController
def index;
end
def create
Feedback.create name: params[:name], message: params[:message], topic: params[:topic], screenshot: params[:screenshot]
authorize Feedback
end
end