У меня есть форма поиска в представлении.
<%= form_with url: issues_path, class: 'filter-box' do %>
<%= text_field_tag(:filter_by, '', id: 'filter-text-field') %>
<% end %>
Когда форма отправлена, выполняется следующее действие:
class IssuesController < ApplicationController
...
def create
@labels = Label.by_search_term(params[:filter_by])
respond_to do |format|
format.js
end
end
end
Все работает хорошо.
Однако я хочу, чтобы действие запускалось при каждом нажатии клавиши.С этой целью я добавил следующий javascript.
<script>
document.getElementById('filter-text-field').addEventListener('keyup', function(){
document.querySelector('.filter-box').submit()
})
</script>
Но когда форма отправляется на ключ вверх, она ломается, и я получаю ошибку: ActionController::UnknownFormat in IssuesController#create
.
Просмотрparams, я не вижу ничего примечательного.
# Submitted by pressing return
# => <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"TJRajeBbEK8+D0Ly5/lbI/SVx8srhG/YS2W1l+Zc+f+TYmsbfehXnsluxOovblCrWBLJy0exhyzhsY+qPhBDOQ==", "filter_by"=>"d", "controller"=>"issues", "action"=>"create"} permitted: false>
# Submitted on keyup
# => <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"7NBwqCuJpbFGvxWgq6qqdB1hF0yptca0N446G4nQ620zJkE+tjrigLHek7hjPaH8seYZTMWALkCdWgAmUZxRqw==", "filter_by"=>"d", "controller"=>"issues", "action"=>"create"} permitted: false>
В чем разница между отправкой формы нажатием клавиши ввода и отправкой формы через javascript?Что мне нужно сделать, чтобы убедиться, что он работает правильно?