如何从 Ruby on Rails 中的 angularjs $location获取 URL 参数



我正在轨道上使用 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?

最新更新