【发布时间】:2015-11-12 21:22:49
【问题描述】:
我正在尝试从特定类别中查询用户喜欢的所有项目的数据。例如:/users/1/categories/5
我遇到了一点 Rails-101 问题,无法找出服务器告诉我路由不存在的原因。
参数正确。该路线存在于 Routes.rb 中。我唯一能想到的是路线出现的顺序。或者可能是由于路由的 SPA 特性。
Routes.rb:
Rails.application.routes.draw do
ACCEPTS_JSON = lambda {|request|
request.accepts.include?(:json)
}
get "/users/email" => "users#id"
get "/items/:id/like" => "items#checkhasliked"
get "/users/:u_id/categories/:c_id " => "users#categoryitems" // should do the trick?
scope constraints: ACCEPTS_JSON do
resources :users
resources :categories
resources :items
end
get "/*path" => "app#main"
post "/users" => "users#create"
post "/items" => "items#create"
post "/items/:id/like" => "items#like"
post "/items/:id/unlike" => "items#unlike"
post "/sessions" => "sessions#create"
root 'app#main'
end
用户控制器:
class UsersController < ApplicationController
...
def categoryitems
render json: {head: :ok}
end
end
ajax 调用:
fetchCategoryItems: function(cID){
var uID = this.props.params.id // user ID
var cID = cID // category ID
$.ajax({
type: "GET",
url: "/users/" + uID + "/categories/" + cID,
dataType: 'json',
success: function(data){
this.setState({didFetchData: 'true', items: data.items})
}.bind(this),
error: function(data){
alert("error! couldn't fetch user's items-by-category")
}
})
}
【问题讨论】:
标签: ruby-on-rails routes