Rails 3中的Ajax表单不发送PARAMS(Rails 3 Ajax Form Not Sen

2019-09-19 18:01发布

我有我的索引页的形式,我使用记录进行排序,我想一些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脚本:

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

});

当我点击提交按钮,看看我的Firebug的控制台来看看发生了什么很明显,它成功地调用Ajax和它所服务的页面没有问题。 然而,它完全忽略了我的PARAMS被发送,并没有考虑到这一点,当它重新查询数据库。 如果我参加了“:远程=>真正的”和删除链接到阿贾克斯文件的PARAMS成功地被发送回索引动作 - 只是没有阿贾克斯:(

我要补充一点,阿贾克斯目前任职分页,我有非常相同的页面上。

Answer 1:

问题是,你再点击一下,处理程序绑定到你的提交按钮,它会覆盖Rails的内置的AJAX功能( :remote => true )。 你的选择#sort-options input, .pagination a匹配不仅分页链接,而且还提交表单的按钮。 按钮没有HREF属性,这是你通过什么$.get()的URL。 所以, $.get(this.href, ...)试图使一个AJAX GET请求空URL(充当如果它是一个空字符串,因此当前的URL,没有任何GET PARAMS)。



文章来源: Rails 3 Ajax Form Not Sending Params