【问题标题】:No route matches [GET] "/users/1/categories/5"没有路线匹配 [GET] "/users/1/categories/5"
【发布时间】: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


    【解决方案1】:

    我会在你的路由文件中使用它

      resources :users, only: [:show] do
         resources :categories, only: [:show], to:  'users#categoryitems'
      end
    

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 1970-01-01
      • 2018-03-04
      • 2011-09-27
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多