您可以在Rails服务器上为Angular应用生成路由而无需重复逻辑吗?

Pet*_*xey 5 routing ruby-on-rails angularjs

我们已经有了Angular路由和Angular路由应用程序。但是,我们需要做一些事情,例如通过电子邮件或通过Twitter发送链接。这些必须在需要在服务器端生成路由的服务器上完成

这意味着我们需要复制当前包含在Angular路由文件中的路由逻辑和路径帮助程序,或者找到一种方法来解析服务器上的Angular路由文件,然后生成ruby path_helper方法。

有没有简单的方法可以做到这一点-一些Rails插件或类似工具?

编辑(以澄清)

我需要能够生成服务器上和cron作业期间页面的链接。如果这是一个Rails应用程序,我将能够使用路径助手edit_user_path @user

问题在于路由的逻辑现在在Angular中。因此,无法在导轨侧生成路径。我需要一些方法来做到这一点。无法从客户端完成此操作,因为客户端将不存在-可以从cron作业中激活

小智 1

我假设您希望用户能够将 myapp.com/something/unique-333/ 作为网址。

您将拥有一个分配给 URL 前缀的控制器来处理它,而不是复制路由。控制器将检查 URL 的后缀 ( /unique-333) 并执行特定于该 URL 的任何操作。

如果您想在后端和前端之间共享此信息,您可以通过将 URL 前缀存储在后端来实现,并在前端在服务初始化后立即获取它并更新路由器。

它看起来像这样:

/* REST API */
function get_url_prefix() {
  return '/something/';
}
function get_obj() {
  return JsonResponse({
    'data': obj,
    'url': get_url_prefix() + obj.id + '/';
  });
}
Run Code Online (Sandbox Code Playgroud)

在 AngularJS 的前端:

.config(function($routeConfig, restApi) {
  restApi.get_url_prefix().then(function(urlPrefix) {
    $routeConfig = {
      urlPrefix: CtrlToHandleUniqueRoutes
    };
  });
});
Run Code Online (Sandbox Code Playgroud)

您的控制器基本上充当唯一 url 的路由器。请注意,唯一的 url 完全存在于后端。