0

特に一方が他方のサブリソースである場合に、異なるコントローラーを互いに関連する URL にマップする方法はありますか?

より具体的に言うと、以下に例を示します。

  1. と の 2 種類のリソースがjobsありarticlesます。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ファイルで実行されているコードは、 Sinatraと同じルーティング構文を持たないRack 用です。このコードの意味:

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

config.ruRack は Sinatra のようにパス内のパラメーターを処理しないため、おそらく の内部では機能しません。

于 2013-02-27T06:06:55.973 に答える