Есть файл input.html.erb, через него я заполняю форму для ввода натурального числа n и ввожу n чисел, при нажатии на кнопку должен запускаться JS скрипт, который обрабатывает этот запрос с помощью метода Get, но не запускается
Это работало на 4 версии Ruby on Rails, когда коды на javascript находились по маршруту: "app/assets/javascripts", теперь эти коды находятся по маршруту "app/javascript/packs", думаю проблема в этом.
Сама программа точно видит этот файл, так как при запуске сервера видно (скрин ниже), что файл обрабатывается, пробовал добавлять в input.html.erv код: <%= javascript_pack_tag 'sequence', 'data-turbolinks-track': 'reload' %>
Код контроллера:
# app/controllers/sequence_controller.rb
class SequenceController < ApplicationController
before_action :authorize
def input
begin
a = params[:value].to_s
b = params[:numbers].to_s
c = a + " " + b
rescue
p 'SequenceController: Input data error'
p c
end
# a = 0 if a < 0
respond_to do |format|
format.html
format.json do
render json: { solution: Answer.where(query: c).first_or_create.get_solution}
end
end
# p Answer.last
# p ActiveSupport::JSON.decode(Answer.last.solution)
# p JSON.parse(Answer.all.to_json).to_xml
end
end
Код input.html.erb:
<!-- app/views/sequence/input.html.erb -->
<form id="form" action="javascript:">
<h1>Последовательность</h1>
<label>Введите натуральное число:</label>
<input type="number" pattern="^[\d]+$" name="value" /> <br> <br>
<label>Введите числа через пробел:</label>
<input type="text" name="numbers"/> <br> <br>
<input type="submit" class = "btn btn-primary" value="Найти последовательность"/>
</form>
<table id="table" style="display:none" class="table table-hover">
<tr>
<th>Н</th>
<th>Исходная последовательность</th>
<th>Подходящие последовательности</th>
<th>Длиннейшая последовательность</th>
<th>Кол-во последовательностей</th>
</tr>
</table>
<div id="error" style="display:none" class = "alert alert-danger">
<strong>Ошибка!</strong> Timeout error
</div>
<script>
<%= javascript_pack_tag 'sequence', 'data-turbolinks-track': 'reload' %>
</script>
Код sequence.js:
(function(){
'use strict';
$(window).one('load', function() {
let $Form = $('#form');
let $Table = $('#table');
let $Error = $('#error');
$Form.on('submit', function() {
let $HTML = '';
$Table.find('tr:not(:first)').remove();
$.get('/sequence/input.json', $Form.serialize(), function($JSON) {
if($JSON['solution'].length === 0) {
$Table.hide();
$Error.show();
}
else {
$.each($JSON['solution'], function($NULL, $Value) {
$HTML += '<tr>\
<td>' + $Value[0] + '</td>\
<td>' + $Value[1] + '</td>\
<td>' + $Value[2] + '</td>\
<td>' + $Value[3] + '</td>\
<td>' + $Value[4] + '</td>\
</tr>';
});
$Table.show().append($HTML);
$Error.hide();
}
});
});
});
})();
Сама страничка и док-во отсутствия каких-либо действий при нажатии на кнопку
Что должно было произойти