Jquery Rails4对ajax进行排序和分页

Jquery Rails4对ajax进行排序和分页,jquery,ruby-on-rails,ajax,unobtrusive-javascript,Jquery,Ruby On Rails,Ajax,Unobtrusive Javascript,我在使用ajax对应用程序上的列表进行排序时遇到问题 分页组件在ajax中运行良好,但排序组件只有在我第一次单击它时才起作用。第二次单击它时,它什么也不做。不会抛出错误,但应用程序不会重定向到新页面,也不会将排序参数传递给控制器 以下是一些相关文件: 控制器: def show @products_scope = Category.find(params[:id]).products.available.order(sort_column + ' ' + sort_dir

我在使用ajax对应用程序上的列表进行排序时遇到问题

分页组件在ajax中运行良好,但排序组件只有在我第一次单击它时才起作用。第二次单击它时,它什么也不做。不会抛出错误,但应用程序不会重定向到新页面,也不会将排序参数传递给控制器

以下是一些相关文件:

控制器:

def show        
    @products_scope = Category.find(params[:id]).products.available.order(sort_column + ' ' + sort_direction)
    @products = @products_scope.page(params[:page]).per(12)
end


private

    def sort_column
        %w[price updated_at].include?(params[:sort]) ? params[:sort] : "updated_at"
    end

    def sort_direction
        %w[asc desc].include?(params[:direction]) ? params[:direction] : "desc"
    end
ApplicationHelper:

  def sortable(column, title = nil)
     title ||= column.titleize
     direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
     link_to title, {:sort => column, :direction => direction}, :remote => true;
  end
Show.html.erb:

 <div id="sort-by-container" class=" sort-by-container  small-6 columns no-padding">
      <p class="sort-by title"> Sort by: </p>
      <p class="sort-by "><%= sortable "price" %></p>
      <p class="sort-by divider"> | </p>
      <p class="sort-by"><%= sortable "updated_at", "Newest" %> </p>
    </div>
  </div>  
        <div id= "paginator" class='row pagination-container'>
        <%= paginate @products, :remote => true %>
      </div>


      <div id= "products">
        <%= render @category %>
      </div>

排序依据:

|

正确%>
show.js.erb:

+$('#products').html('<%= escape_javascript render(@category) %>');
+$('#paginator').html('<%= escape_javascript(paginate(@products, :remote => true).to_s) %>');
+$(“#产品”).html(“”);
+$('#paginator').html('true.to_s)%>');
更新1: 我认为问题可能来自ApplicationHelper中的方向变量。当我尝试调试代码时,我可以看到get请求,但它总是要求升序。你有什么想法吗


提前谢谢。

你能再解释一下“不工作”到底是什么意思吗?第二次单击它是否会导致某种服务器异常或其他情况?到底发生了什么?第二次点击它什么都没有。不会抛出任何错误。服务器抛出一个200,因此没有出现任何问题。出于某种原因,我认为参数没有被传递,因为'remote=>true'