2012-07-18 50 views
2

我在我的索引页上有一个表单用于对记录进行排序,我想为它添加一些Ajax功能,但由于某种原因,它不会尽快发送我的表单参数添加Ajax的混合。Rails 3 Ajax表单不发送参数

这里是我的形式:

<div id="sort-options"> 
    <%= form_tag uploads_path, :method => "get", :remote => true do %>   
      <%= select_tag "sort", options_for_select([["Creation Date", "created_at"], ["File Name", "name"], ["Rating", "rating_average"], ["Downloads", "downloads"]]) %> 
      <%= select_tag "direction", options_for_select([["Descending", "desc"], ["Ascending", "asc"]]) %>     
      <%= submit_tag "Sort" %> 
    <% end %> 
</div> 

而且我阿贾克斯的javascript:

jQuery(document).ready(function($) 
{ 
    $(function() { 
     $('#sort-options input, .pagination a').live("click", function() { 
      $.get(this.href, null, null, 'script'); 
      return false; 
     }); 
    }); 

}); 

当我点击提交按钮,看看我的Firebug的控制台来看看发生了什么很明显,它成功地调用Ajax和它提供的页面没有问题。但是,它完全忽略了发送的参数,并且在重新查询数据库时不考虑这些参数。如果我拿出':remote => true'并删除链接到Ajax文件,那么params会成功发送回索引操作 - 只是没有Ajax :(

我应该补充一点,Ajax目前适用于分页我有同一页上

回答

3

问题是你绑定另一个点击处理程序到您的提交按钮,它覆盖了Rails的内置AJAX功能(:remote => true)。您的选择器#sort-options input, .pagination a不仅匹配分页链接,而且提交按钮表单按钮没有href属性,这是你传递给$.get()作为一个URL,所以$.get(this.href, ...)试图向一个空的URL发出一个AJAX GET请求(它的行为就像是一个空字符串,真正水流nt URL,没有任何GET参数)。

+1

我附加了一个单独的提交事件,而不是点击事件,因此' \t $('#sort-options input')。submit(function(){.....'现在它的作用就像一个魅力。 – Noz 2012-07-18 19:01:05