Javascript 带有form_标记的rails4ajax请求

Javascript 带有form_标记的rails4ajax请求,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我正在开发简单的web界面服务,它与数据库交互,并且可以通过参数过滤项目。 以下是代码示例: config/routes.rb resources :list_items do collection do get 'filter' end end app/views/list_items/index.html.erb <%= form_tag(filter_list_items_path, method: 'get') do %> <%= te

我正在开发简单的web界面服务,它与数据库交互,并且可以通过参数过滤项目。 以下是代码示例:

config/routes.rb

resources :list_items do
    collection do
      get 'filter'
    end
end
app/views/list_items/index.html.erb

<%= form_tag(filter_list_items_path, method: 'get') do %>
  <%= text_field_tag(:some_parameter) %>
  <%= submit_tag 'Filter', remote: true %>
<% end %>

<table>  
  <%= render @list_items %>
</table>
app/views/list_items/filter.js.erb

$('#listElement').html('<%= escape_javascript render(@list_items) %>');
$('#listElement').html('';
当我将数据输入到文本字段并按下“筛选”按钮时,它将调用列表项控制器中的筛选操作。我希望只刷新表内容,但它会抛出错误
ActionController::UnknownFormat

另外,当我在
respond\u to
块中添加行
format.html{redirect\u to list\u items\u url}
时,它不会抛出错误,也不会应用过滤器


我对rails感到困惑,请澄清我做错了什么。感谢

之所以会发生这种情况,是因为表单提交的是html格式,这是Rails中的默认格式,这就是为什么
format.html
会响应的原因,但是因为它返回的是html而不是javascript,所以什么都不会发生

您得到的是
UnknownFormat
错误,因为在您的操作中,您只接受
respond\u to
块中的
format.js

要解决此问题,请尝试将表单更改为以下内容:

<%= form_tag(filter_list_items_path(format: :js), method: 'get', remote: true) do %>
  <%= text_field_tag(:some_parameter) %>
  <%= submit_tag 'Filter' %>
<% end %>


在上面的代码中,我们告诉rails显式地将表单提交到
js
格式,因此这将生成一个带有
.js
后缀的路由,也不是将
remote
指示器放在提交按钮上,正确的方法是将其放在表单标签上

看起来很管用!正确的方法是如此接近)谢谢你
$('#listElement').html('<%= escape_javascript render(@list_items) %>');
<%= form_tag(filter_list_items_path(format: :js), method: 'get', remote: true) do %>
  <%= text_field_tag(:some_parameter) %>
  <%= submit_tag 'Filter' %>
<% end %>