0

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

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

  1. 我有 2 种类型的资源:jobsarticles. Ajob包含多个articles. 尽管他们有关系,但我想在单独的文件中处理与每个相关的实际代码。因此,我有:

helpers/job_api.rb

helpers/article_api.rb

它们每个都像这样扩展 SinatraBase:

class ArticleAPI < Sinatra::Base
  register Sinatra::Async

  get '/list' do
  #...
  end
end

我现在想要的是将所有属于作业的 url 请求映射到只JobAPI属于文章的那些(但仍然始终与单个作业相关联到ArticleAPI.

我的config.ru样子是这样的:

$LOAD_PATH << '.' 需要“服务器”

map "/" do
  run Sinatra::Application
end

map "/job" do
  run JobAPI
end

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

但是当我尝试转到 url 时,这不起作用/job/12/article/list

任何人都知道是否有办法做到这一点?

谢谢

4

1 回答 1

0

在您的config.ru文件中执行的代码是针对Rack的,它没有与Sinatra相同的路由语法。意思是这段代码:

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

可能无法在内部工作,config.ru因为 Rack 不像 Sinatra 那样处理路径中的参数。

于 2013-02-27T06:06:55.973 回答