Javascript 部署到多个子URI时使用Rails的jQuery

Javascript 部署到多个子URI时使用Rails的jQuery,javascript,jquery,ruby-on-rails,url-routing,passenger,Javascript,Jquery,Ruby On Rails,Url Routing,Passenger,嘿。所以我有一个Rails应用程序,它被部署到一台生产机器上,通过Apache/Passenger向两个SubURI提供服务 /app /app_2 上述两个suburi都运行相同的代码库。它只是指向公共目录的两个符号链接,都通过乘客指向: RailsBaseURI "/app" RailsBaseURI "/app_2" 现在,伊玛是jQuery的忠实粉丝。因此,我将它与几个插件一起使用,其中一个是自动完成功能: $("#municipality_name").autocomplete('

嘿。所以我有一个Rails应用程序,它被部署到一台生产机器上,通过Apache/Passenger向两个SubURI提供服务

/app
/app_2
上述两个suburi都运行相同的代码库。它只是指向公共目录的两个符号链接,都通过乘客指向:

RailsBaseURI "/app"
RailsBaseURI "/app_2"
现在,伊玛是jQuery的忠实粉丝。因此,我将它与几个插件一起使用,其中一个是自动完成功能:

$("#municipality_name").autocomplete('autocomplete_municipality', {
    matchContains: true,
    scroll: false
}).result(function(event, data, formatted) {
    $.post('fill_state', {city: formatted}, null, 'script');
});
我遇到的问题是,当它在生产环境中运行时,调用的url是

  http://www.app.com/autocomplete_municipality
而不是

http://www.app.com/app/autocomplete_municipality
-或-
http://www.app.com/app_2/autocomplete_municipality

(我知道其中缺少控制器名称,我有路径可以为我提供这些路径。)

无论如何,我的问题是,我该如何告诉jQuery不要吹走子URI路径
config.action\u controller.relative\u url\u root=“/signup\u 2”
似乎不是一个可行的选项,因为我这里有多个子URI。我也不愿意将jQuery方法中的路径更改为
autocomplete('app/autocomplete_communications')…
,因为我仍然无法访问我的两个子URI。也许这是唯一的选择

这两个URI的主要原因是用于内部测试-->生产切换(因为我们首先向公司内部开放新站点,然后向公众开放),我们希望能够立即启动从/app_2(我们的测试路径)到/app(公共路径)的所有内容无需在配置端进行任何更改


想法?

您可以解析当前位置并将其放入自动完成的路径中

var pathname=window.location.pathname;

然后将路径的第一部分(或需要到达的深度)连接到autocomplete的第一个参数中


(就我个人而言,也许分离应用程序的第三级域会更干净,每个域的所有路由代码都会保持不变。)

您可以解析当前位置并将其放入自动完成路径中

var pathname=window.location.pathname;

然后将路径的第一部分(或需要到达的深度)连接到autocomplete的第一个参数中


(就我个人而言,也许分离应用程序的第三级域会更干净,每个域的所有路由代码都会保持不变。)

或者您可以使用命名路由和视图助手在JavaScript变量中定义url

var autocomplete_path = <%= autocomplete_municipality_path %>;
var自动完成路径=;
是啊,太难看了


(将测试和生产应用程序部署到单独的域(或子域)而不是单独的dir将消除这些问题)

或者您可以使用命名路由和视图帮助器在JavaScript变量中定义url

var autocomplete_path = <%= autocomplete_municipality_path %>;
var自动完成路径=;
是啊,太难看了


(将您的测试和生产应用程序部署到单独的域(或子域)而不是单独的DIR将消除这些问题)

问题是它们都作为生产和相同的代码库运行。只有一个最初锁定为内部网络访问(/app_2),然后第二条路径指向旧站点(/app)。然后当我们上线时,/app被重定向到新代码,/app_2也向公众开放,主要是因为我们的网络团队不想在内部重写一堆URL。所以现在我们有两条路径。我想我可以强制支持/app…这将非常简单。也感谢您的输入。两者都是ugly解决方案,但我知道它将与它现在的运行方式有关。我希望有一些优雅的东西。也许在Rails 3中…实际上这是最接近我想要的,有一个轻微的修改:
,然后让我做
$(“#市政当局(U名称”)。自动完成(uri+“munici…
忘记了
请求。请求uri
方法。问题是它们都作为生产和相同的代码库运行。只有一个最初锁定为内部网络访问(/app_2),然后第二条路径指向旧站点(/app)。然后当我们上线时,/app被重定向到新代码,/app_2也向公众开放,主要是因为我们的网络团队不想在内部重写一堆URL。所以现在我们有两条路径。我想我可以强制支持/app…这将非常简单。也感谢您的输入。两者都是ugly解决方案,但我知道它将与它现在的运行方式有关。我希望有一些优雅的东西。也许在Rails 3中…实际上这是最接近我想要的,有一个轻微的修改:
,然后让我做
$(“#市政当局(U名称”)。自动完成(uri+“munici…
忘记了
请求。请求uri
方法。