Ruby on rails 如何使用提交将常规筛选表单更改为使用AJAX?

Ruby on rails 如何使用提交将常规筛选表单更改为使用AJAX?,ruby-on-rails,ajax,forms,jquery,filter,Ruby On Rails,Ajax,Forms,Jquery,Filter,我有一张场地表。默认情况下,“场馆索引”页面列出所有场馆记录,并允许您使用同一页面上的表单(带有“提交”按钮和“页面重新加载”)按区域和/或类型对其进行筛选 然后显示找到的所有场地,表单会自行重置 我怎样才能在不重新加载页面的情况下通过单击不同的过滤器选项来更新场馆列表?因此,没有提交按钮,表单保持更改状态 场馆管理员 Vincements index.html.erb这已经在使用jQuery UI来获得外观更好的复选框 :get,:id=>'filter\u form'do%> “venue

我有一张场地表。默认情况下,“场馆索引”页面列出所有场馆记录,并允许您使用同一页面上的表单(带有“提交”按钮和“页面重新加载”)按区域和/或类型对其进行筛选

然后显示找到的所有场地,表单会自行重置

我怎样才能在不重新加载页面的情况下通过单击不同的过滤器选项来更新场馆列表?因此,没有提交按钮,表单保持更改状态

场馆管理员

Vincements index.html.erb这已经在使用jQuery UI来获得外观更好的复选框


:get,:id=>'filter\u form'do%>

“venuetype-{v.id}”%>

“area-#{a.id}”%>

‘场馆’,:收藏=>@victions%>

非常感谢您的帮助,非常感谢

您可能希望使用jquery来实现这一点

最简单的方法是使用jquery在单击过滤器时自动发送表单,仍然会重新加载页面,但访问者不必单击submit按钮

代码将类似于:

$(".checkbox-which-send-form-when-clicked").change(function(e){
  $(this).parents("form:first").submit();
});
请阅读有关的文档


另一种不会在每次单击复选框时重新加载页面的解决方案是使用Ajax请求发送表单并获得结果。可以找到一个很好的教程

您可能希望使用jquery来实现这一点

最简单的方法是使用jquery在单击过滤器时自动发送表单,仍然会重新加载页面,但访问者不必单击submit按钮

代码将类似于:

$(".checkbox-which-send-form-when-clicked").change(function(e){
  $(this).parents("form:first").submit();
});
请阅读有关的文档


另一种不会在每次单击复选框时重新加载页面的解决方案是使用Ajax请求发送表单并获得结果。可以找到一个很好的教程

,所以我对Ruby一无所知,但我知道使用jQuery需要实现的架构。首先,您需要设置一个将JSON返回到客户端的端点。当用户创建、修改或只是简单地提交过滤器表单时,您将发布或获取JSON端点。这是您的选择,您可以在用户更改每个字段时检索它,或者在单击“提交”按钮时检索它,这完全取决于您希望如何使其具有交互性

您可以使用jQuery$.ajax函数来检索JSON。我重新发送$.post或$.get以检索更新的数据

您还可以为表单提交按钮设置单击事件处理程序。看起来可能是这样的,使用e.preventDefault很重要,因为这样可以防止整个页面发回

$(“表格:提交”)。点击(功能(e){

e、 预防默认值()

$.getJSON([您的AJAX url],[来自过滤器的数据],函数(结果){ //使用模板更新表 }))

}))

在$getJSON回调中,我使用jQuery模板或其他一些模板合并功能(如Resig的micro模板)重新命名

我写了一系列关于在ASP.NET中做这类事情的博客文章。它应该可以很好地转换为Ruby,只要用Ruby服务器端替换ASP.NET内容,您就可以开始了


所以我对Ruby一无所知,但我知道使用jQuery需要实现的体系结构。首先,您需要设置一个将JSON返回到客户端的端点。当用户创建、修改或只是简单地提交过滤器表单时,您将发布或获取JSON端点。这是您的选择,您可以在用户更改每个字段时检索它,或者在单击“提交”按钮时检索它,这完全取决于您希望如何使其具有交互性

您可以使用jQuery$.ajax函数来检索JSON。我重新发送$.post或$.get以检索更新的数据

您还可以为表单提交按钮设置单击事件处理程序。看起来可能是这样的,使用e.preventDefault很重要,因为这样可以防止整个页面发回

$(“表格:提交”)。点击(功能(e){

e、 预防默认值()

$.getJSON([您的AJAX url],[来自过滤器的数据],函数(结果){ //使用模板更新表 }))

}))

在$getJSON回调中,我使用jQuery模板或其他一些模板合并功能(如Resig的micro模板)重新命名

我写了一系列关于在ASP.NET中做这类事情的博客文章。它应该可以很好地转换为Ruby,只要用Ruby服务器端替换ASP.NET内容,您就可以开始了

$(".checkbox-which-send-form-when-clicked").change(function(e){
  $(this).parents("form:first").submit();
});