【发布时间】:2019-02-12 00:49:36
【问题描述】:
我在视图中有一个搜索表单。
<%= 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。
查看参数,我没有看到任何值得注意的东西。
# 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提交表单有什么区别?我需要做些什么来确保它正常工作?
【问题讨论】:
-
检查此问题stackoverflow.com/questions/22943892/… 似乎在提交格式时正在发送正确的格式,但是当您执行
keyup提交时,您没有发送任何格式或者它丢失了所以控制器不知道如何呈现响应。
标签: javascript ruby-on-rails ruby