相关URL如何在Sinatra中运行?

时间:2016-04-07 12:56:13

标签: sinatra

我正在使用Apache与Passenger托管我的Sinatra应用程序。它托管在子文件夹中 - 意思是,我的主要网站是example.com,我的应用程序位于example.com/popcorn

所以我有get '/'路线,这很好用。问题是我的观点包含一个HTML表单,该表单向upload发出了帖子请求,而post '/upload'路由没有处理它。而不是example.com/popcorn/upload,而是试图获得example.com/upload

所以我认为没问题,不是理想的解决方案,但是现在我将对表单操作URL进行硬编码。但这也不起作用 - 使行动popcorn/upload失败。这是我有点困惑的地方,我的Google-fu很弱,我在那里找不到帮助。

也许我可以有某种Apache重写规则,但这是正确的解决方案吗?我错过了什么吗?我真的很感激这里的提示,因为我觉得我搞砸了一些非常简单的东西,这真的让我烦恼。

1 个答案:

答案 0 :(得分:1)

你可能想要url helper method。这会考虑应用程序在服务器上的安装位置:

url('/upload')

以上代码将评估为:

http://example.com/popcord/upload

在您的应用内部,您不需要更改任何内容,这将被路由到现有的post '/upload'处理程序。