Rails3Ajax表单不发送参数

Rails 3 Ajax Form Not Sending Params

本文关键字:参数 表单 Rails3Ajax      更新时间:2023-11-07

我的索引页上有一个表单,我正在使用它来对记录进行排序,我想为它添加一些Ajax功能,但由于某种原因,它不会在我将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>

还有我的Ajax 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目前用于分页,我在同一个页面上也有。

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