Ruby on rails 未定义的方法`名称空间';
我正在尝试为sinatra应用程序实现命名空间(使用sinatra contrib gem)路由,但在尝试启动服务器后出现错误:Ruby on rails 未定义的方法`名称空间';,ruby-on-rails,ruby,gem,sinatra,Ruby On Rails,Ruby,Gem,Sinatra,我正在尝试为sinatra应用程序实现命名空间(使用sinatra contrib gem)路由,但在尝试启动服务器后出现错误: undefined method `namespace' for GuessApp:Class app.rb routes/books.rb class GuessApp
undefined method `namespace' for GuessApp:Class
app.rb
routes/books.rb
class GuessApp
没有名称空间,这条路线很好。您在需要
books.rb
之前需要“sinatra/namespace”,但您只需要在需要后在GuessApp
应用程序中注册sinatra::namespace。仅要求一项功能只能在经典风格的应用程序中使用
在尝试使用Namespace
之前,您需要确保Sinatra::Namespace
已在GuessApp
中注册,类似于app.rb中的内容:
require 'sinatra'
require 'sinatra/namespace'
require 'haml'
class GuessApp < Sinatra::Base
register Sinatra::Namespace
end
require_relative 'routes/init'
require_relative 'models/init'
require_relative 'helpers/init'
需要“sinatra”
需要'sinatra/名称空间'
需要“haml”
类GuessApp
您是如何启动该应用程序的?看起来您在app.rb
之前加载books.rb
,因此名称空间
扩展不可用。thin-R config.ru-a 127.0.0.1-p 8080 start
。在config.rurequire File.join(File.dirname(\uu File\uu),'app.rb')
运行GuessApp.new
在app.rb中require“sinatra/namespace”之后的includes books.rb的代码在哪里。我已经更新了信息。似乎对我不起作用。我尝试要求使用'sinatra/namespace'
并在我的ApplicationController中使用此register语句,但应用程序总是抱怨它对sinatra::namespace
一无所知,我通过config.ru
加载我的应用程序。你能给我一个提示吗?谢谢
require_relative "books"
require_relative "stars"
class GuessApp < Sinatra::Base
namespace '/books' do
@title = "Books"
get '' do
@books = Book.all
haml :books, layout: :layout
end
end
end
require 'sinatra'
require 'sinatra/namespace'
require 'haml'
class GuessApp < Sinatra::Base
register Sinatra::Namespace
end
require_relative 'routes/init'
require_relative 'models/init'
require_relative 'helpers/init'