我正在轨道上使用 ruby 显示一个数据库表,每当我单击列标题时,我想对列进行排序。我的想法是调用一个 angularjs 函数,该函数将 ?sort_by=id
之类的参数添加到 url 中,并将其取回我的 ruby 控制器中以执行有序请求,但它似乎不起作用。
这是我的用户.html.haml 文件调用函数的部分:
%th
%button{'ng-click': 'sort_by("product")'}
My angularjs function (users.controller.js( :
$scope.sort_by = function(str){
$location.search({sort_by: 'product'});
$window.location.reload();
}
和 users_controller.rb 中的索引函数
def index
@users = User.all
max_per_page = 50
puts params
paginate @users.size, max_per_page do |limit, offset|
render json: @users.limit(limit).offset(offset)
end
end
当我单击该按钮时,它会重新加载 url 中带有 ?sort_by=product
的页面并调用索引函数,但puts params
仍然返回{"subdomain"=>"admin", "controller"=>"admin/users", "action"=>"index"}
我怎样才能使这项工作?提前谢谢。
我使用了一个带有参数的$http获取请求,它终于起作用了,以防它帮助某人:
$http({
method: 'GET',
url: 'users',
dataType: 'json',
params: {
'sort_by': 'products.name',
},
headers: {
"Content-Type": "application/json"
}
}).success(function(response){
console.log('succes');
}).error(function(error){
console.log('err');
});
然后在 users_controller.rb 中的索引方法中:
puts request.params['sort_by'] if !request.params['sort_by'].nil?