Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 Sinatra中的子路由_Ruby_Routing_Sinatra - Fatal编程技术网

Ruby Sinatra中的子路由

Ruby Sinatra中的子路由,ruby,routing,sinatra,Ruby,Routing,Sinatra,是否有一种方法可以将不同的控制器映射到彼此相关的URL,特别是当一个控制器是另一个的子资源时 更具体地说,这里有一个例子: 我有两种资源:工作和文章。作业包含多篇文章。尽管它们之间存在关系,但我希望在单独的文件中处理与它们相关的实际代码。因此,我有: 助手/job_api.rb和 helpers/article_api.rb 它们各自延伸至SinatraBase,如下所示: class-ArticleAPI

是否有一种方法可以将不同的控制器映射到彼此相关的URL,特别是当一个控制器是另一个的子资源时

更具体地说,这里有一个例子:

  • 我有两种资源:
    工作
    文章
    作业
    包含多篇
    文章
    。尽管它们之间存在关系,但我希望在单独的文件中处理与它们相关的实际代码。因此,我有:
  • 助手/job_api.rb

    helpers/article_api.rb

    它们各自延伸至SinatraBase,如下所示:

    class-ArticleAPI
    我现在想要的是将所有只属于作业的url请求映射到
    JobAPI
    ,以及属于文章(但始终与单个作业关联)的url请求映射到
    ArticleAPI

    我的
    config.ru
    如下所示:


    $LOAD_PATH在
    config.ru
    文件中执行的代码与not的路由语法相同。这意味着此代码:

    map "/job/:job_id/article" do
      run ArticleAPI
    end
    
    可能无法在
    config.ru
    中工作,因为Rack不会像Sinatra那样处理路径中的参数

    map "/job/:job_id/article" do
      run ArticleAPI
    end