【问题标题】:Rails route to angularjs gone wrong?Rails 到 angularjs 的路由出错了?
【发布时间】:2016-02-15 23:58:36
【问题描述】:

能否请更有经验的人告诉我我做错了什么?

我的 routes.rb 中有这个:

resources :interests do
  resources :tweets, only: :index
end

在我的 TweetsController 我有这个索引方法:

 def index
   @tweets = get_user_tweets(params[:id])       
   respond_with(@tweets) do |format|
   format.json { render :json => @tweets.as_json }
  end end

计划是,当我去 /interests/:id/tweets 获取推文 json 格式时,这是我的 app.js 中的内容

app.factory('Tweets', ['$resource', function($resource) {
    return $resource('/interests/:id/tweets.json')
} ]);

app.controller("HomeCtrl", ['$scope','Interest','Tweets', '$routeParams', function($scope,Interest,Tweets, $routeParams) {
  $scope.interest = Interest.get({id: $routeParams.id})
  $scope.tweets = Tweets.query();
  $scope.works = "it works";
}]);

在配置中:

$routeProvider.when('/interests/:id/tweets',{
            templateUrl: '/templates/tweets.html',
            controller: 'HomeCtrl'
        });

但是,例如当我转到interests/4/tweets 时,我收到消息“它有效”,但我没有收到推文,当我打开控制台时,它显示 /interests/tweets.json 404 ( Not Found) 这是错误的,因为它应该寻找 interests/:id/tweets

有人可以指出我正在犯的错误吗?

app.factory('Interests', ['$resource', function($resource) {
    return $resource('/interests.json', {}, {
        query: { method: 'GET', isArray: true },
        create: { method: 'POST' }
    }) 
}]);

app.factory('Interest', ['$resource', function($resource) {
    return $resource('/interests/:id.json', {}, {
        show: { method: 'GET' },
        update: { method: 'PUT', params: {id: '@id'} },
        delete: { method: 'DELETE', params: {id: '@id'} }
    }

) }])

【问题讨论】:

  • 它抛出这个错误是因为服务器认为 interests/tweets 中的“tweets”是一个 ID,所以它找不到一个值为“tweets”的 ID,但我不知道为什么当我给它 interests/:id/tweets 请帮助 时它是否正在搜索该 url
  • 你能把Interest的声明贴在你的HomeCtrl吗?
  • 这里,我添加了兴趣,谢谢你的时间

标签: javascript ruby-on-rails json angularjs twitter


【解决方案1】:

服务器认为兴趣/推文中的“推文”是一个 ID,因此它找不到值为“推文”的 ID,但我不明白为什么当我给它兴趣/:id/推文时它会搜索该网址

这是因为通过在 Tweets 服务上调用 query 方法,您不会提供 id。在您的控制器中,您可以这样调用它:

$scope.tweets = Tweets.query({id: 4});

【讨论】:

  • 现在我收到 _/interests/tweets.json?interest_id=2 _ 错误,请注意我没有推文模型,我从 Twitter API 获取推文(仅限应用程序身份验证) 并且在我集成 Angularjs 之前,该应用程序在 html.erb 上运行良好,我根据我的兴趣(用户)过滤了推文,但将其发送给 angular(我必须这样做)让我很困扰
  • 它应该是 'interests/interest_id/tweets 我这样做是为了获取有关用户和推文的信息,也许我的方法完全错误,但我没有看到其他方法。 ..
  • 如果你使用get而不是query
  • 我是用cloud9开发的,有时间可以看代码:)
  • 太棒了,是的,我想,我以前从未这样做过:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多