Ruby on rails rake路由上未初始化的常量API
接下来,我在Rails上创建了现有博客web应用程序的API。我得到一个错误: 未初始化常量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
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的何处。我把它放在课堂上。它现在给出了一些其他错误。请将其放在:类应用程序
中。你试过了吗?它有用吗?输出是什么?