【问题标题】:Sub routing in SinatraSinatra 中的子路由
【发布时间】:2013-02-27 14:06:55
【问题描述】:

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

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

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

helpers/job_api.rb

helpers/article_api.rb

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

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

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

我现在想要的是将仅属于作业的所有 url 请求映射到 JobAPI 和属于文章的 URL 请求(但始终与单个作业相关联到 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 时,这不起作用。

有人知道有没有办法做到这一点?

谢谢

【问题讨论】:

    标签: ruby routing sinatra


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多