Ruby on rails rake路由上未初始化的常量API

Ruby on rails rake路由上未初始化的常量API,ruby-on-rails,ruby,api,Ruby On Rails,Ruby,Api,接下来,我在Rails上创建了现有博客web应用程序的API。我得到一个错误: 未初始化常量API 这是我的代码: lib/api/v1/articles.rb: module API module V1 class Articles < Grape::API version 'v1' format :json resource :articles do desc "Return list of recent posts" get do Ar

接下来,我在Rails上创建了现有博客web应用程序的API。我得到一个错误:

未初始化常量API

这是我的代码:

lib/api/v1/articles.rb

module API
 module V1
   class Articles < Grape::API
  version 'v1'
  format :json

  resource :articles do
    desc "Return list of recent posts"
    get do
     Article.recent.all
    end
  end
 end
end
end
lib/api/root.rb

module API
class Root < Grape::API
    prefix 'api'
    mount API::V1::Root
    end
end
 Rails.application.routes.draw do
  mount API::Root => '/'
 get 'welcome/index'
 root 'welcome#index'
  resources :articles
  end
class ArticlesController < ApplicationController
def new
end
def create
   # render plain: params[:article].inspect
     @article = Article.new(article_params)

 @article.save
 redirect_to @article
    end
def show
 @article = Article.find(params[:id])
end
private

def article_params
    params.require(:article).permit(:title,:text)
    end

end
# Load the Rails application.
require File.expand_path('../application', __FILE__)

# Initialize the Rails application.
Rails.application.initialize!
config/routes.rb

module API
class Root < Grape::API
    prefix 'api'
    mount API::V1::Root
    end
end
 Rails.application.routes.draw do
  mount API::Root => '/'
 get 'welcome/index'
 root 'welcome#index'
  resources :articles
  end
class ArticlesController < ApplicationController
def new
end
def create
   # render plain: params[:article].inspect
     @article = Article.new(article_params)

 @article.save
 redirect_to @article
    end
def show
 @article = Article.find(params[:id])
end
private

def article_params
    params.require(:article).permit(:title,:text)
    end

end
# Load the Rails application.
require File.expand_path('../application', __FILE__)

# Initialize the Rails application.
Rails.application.initialize!
这是现有的web应用程序代码:

app/controllers/articles\u controller.rb

module API
class Root < Grape::API
    prefix 'api'
    mount API::V1::Root
    end
end
 Rails.application.routes.draw do
  mount API::Root => '/'
 get 'welcome/index'
 root 'welcome#index'
  resources :articles
  end
class ArticlesController < ApplicationController
def new
end
def create
   # render plain: params[:article].inspect
     @article = Article.new(article_params)

 @article.save
 redirect_to @article
    end
def show
 @article = Article.find(params[:id])
end
private

def article_params
    params.require(:article).permit(:title,:text)
    end

end
# Load the Rails application.
require File.expand_path('../application', __FILE__)

# Initialize the Rails application.
Rails.application.initialize!
environment.rb的内容

module API
class Root < Grape::API
    prefix 'api'
    mount API::V1::Root
    end
end
 Rails.application.routes.draw do
  mount API::Root => '/'
 get 'welcome/index'
 root 'welcome#index'
  resources :articles
  end
class ArticlesController < ApplicationController
def new
end
def create
   # render plain: params[:article].inspect
     @article = Article.new(article_params)

 @article.save
 redirect_to @article
    end
def show
 @article = Article.find(params[:id])
end
private

def article_params
    params.require(:article).permit(:title,:text)
    end

end
# Load the Rails application.
require File.expand_path('../application', __FILE__)

# Initialize the Rails application.
Rails.application.initialize!
当我在您的config/application.rb中插入config.autoload_paths+=Dir[“#{config.root}/lib/**/”],并运行rake路由时,会出现错误
无法将符号转换为字符串

升级grape版本时,出现以下错误:


根据讨论,您需要将grape gem的版本更新为0.9.0,然后需要在gem文件中添加以下行:

gem 'grape', '0.9.0'
然后:

$ bundle install

从版本0.11.0开始,文档中说

轨道

将API文件放入app/API。Rails需要一个子目录 匹配Ruby模块的名称和与 类的名称。在我们的示例中,文件名和位置 Twitter::API的目录应该是app/API/Twitter/API.rb


简单的解决方案是创建另一个api文件夹,并将整个文件和目录移动到app/api/api文件夹中

您能发布错误跟踪,包括发生错误的代码行吗?@Surya:我已经更新了上面的错误。请检查。添加以下行:
config.autoload_paths+=Dir[“#{config.root}/lib/**/”]
到您的config/application.rb文件中,然后重试?我应该将此代码放在application.rb的何处。我把它放在课堂上。它现在给出了一些其他错误。请将其放在:
类应用程序
中。你试过了吗?它有用吗?输出是什么?