Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法`名称空间';_Ruby On Rails_Ruby_Gem_Sinatra - Fatal编程技术网

Ruby on rails 未定义的方法`名称空间';

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

我正在尝试为sinatra应用程序实现命名空间(使用sinatra contrib gem)路由,但在尝试启动服务器后出现错误:

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.ru
require 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'