Javascript 带有form_标记的rails4ajax请求
我正在开发简单的web界面服务,它与数据库交互,并且可以通过参数过滤项目。 以下是代码示例: config/routes.rbJavascript 带有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
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 %>