提问人:Chinsky 提问时间:10/15/2015 最后编辑:Chinsky 更新时间:10/15/2015 访问量:198
Rails4 对 ajax 进行排序和分页
Rails4 sort and paginate ajax
问:
我在使用 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
显示.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>
显示.js.erb:
+$('#products').html('<%= escape_javascript render(@category) %>');
+$('#paginator').html('<%= escape_javascript(paginate(@products, :remote => true).to_s) %>');
更新1: 我认为问题可能来自 ApplicationHelper 中的方向变量。当我尝试调试代码时,我可以看到 get 请求,但它总是要求升序。关于如何做到这一点的任何想法?
提前致谢。
答: 暂无答案
评论