ruby-on-rails - 没有路由匹配 [GET]/users

标签 ruby-on-rails ruby routes

编辑:由于评论中的反馈,资源和 Controller 已经多元化。但我的问题仍然存在。

我是 Rails 的新手,我正在尝试在 Rails 4 中创建一个 REST API。 当我尝试对 User 资源执行 GET 请求时出现路由错误:http://api.localhost:3000/users

No route matches [GET] "/users"

但是,当我在终端上执行命令“rake routes”时,我可以看到有一个 /users 路由:

    api_users GET    /users(.:format)          api/users#index {:subdomain=>"api"}
              POST   /users(.:format)          api/users#create {:subdomain=>"api"}  
 new_api_user GET    /users/new(.:format)      api/users#new {:subdomain=>"api"}
edit_api_user GET    /users/:id/edit(.:format) api/users#edit {:subdomain=>"api"}
     api_user GET    /users/:id(.:format)      api/users#show {:subdomain=>"api"}
              PATCH  /users/:id(.:format)      api/users#update {:subdomain=>"api"}
              PUT    /users/:id(.:format)      api/users#update {:subdomain=>"api"}
              DELETE /users/:id(.:format)      api/users#destroy {:subdomain=>"api"}

这是我的 route.rb 文件的内容:

Rails.application.routes.draw do

  # create rousources in subdomain api
  namespace :api, path: '/', constraints: { subdomain: 'api' } do
    resources :users
  end

end

users_controller.rb 文件:

module Api
    class UsersController < ApplicationController

        def index
            @users = User.all

            render json: users, status: 200
        end

    end
end

有什么建议吗?

编辑:由于评论中的反馈,资源和 Controller 已经多元化。但我的问题仍然存在。

最佳答案

Rails 通过从右侧第二个点前面的主机地址中获取该部分来确定 URL 的子域。在您的示例中,您使用主机 api.localhost。 Rails 将从中解析一个空的子域。

因此,我建议在您的 hosts 文件中配置一个类似 api.my_app.dev 的域。这将允许 Rails 从主机确定正确的 api 子域部分。

在你这样做之后你的本地服务器可以响应 http://api.my_app.dev:3000/users

顺便说一句。我选择了顶级域 dev,因为如果您使用 POW 这样的工具,它是默认域.

关于ruby-on-rails - 没有路由匹配 [GET]/users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618905/

相关文章:

mysql - Rails 服务器错误

ruby-on-rails - 关于Ruby on Rails的几个问题

ruby-on-rails - 如何测试锁机制

routes - Umbraco 4.10 + 扩展 Global.ascx

mysql - Laravel 从多对多数据透视表中删除单个数据

ruby-on-rails - rails 3 - belongs_to :uniqueness

javascript - rspec 测试 : putting :js => true also affects the before block

ruby-on-rails - RSpec 测试失败,资源路由为 "No route matches"

ruby - 使用 :sql 模式格式时如何使 rake db :migrate generate schema. rb

ruby-on-rails - 当 Controller 方法存在、路由已定义且 View 调用它时,为什么我会收到路由错误?