2

我的索引页面上有一个表单,用于对记录进行排序,我想向它添加一些 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文件的链接,则参数成功地被发送回索引操作 - 只是没有Ajax :(

我应该补充一点,Ajax 目前适用于我在同一页面上的分页。

4

1 回答 1

3

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

于 2012-07-18T18:36:18.480 回答