0

我正在编写一个使用 AngularJS 的应用程序,因此该应用程序设置为将所有请求路由到 Angular 接管的主页。然后在 Angular 用于检索数据的 api 范围内定义所有路由。但是,如果用户导航到具有正常 URL 的页面,那么当它重定向到主页时,它会维护该 URL,然后 Angular 会使用该 URL 来加载正确的状态。

我现在想要做的是能够在 rails 中使用 URL 帮助程序来生成我的 URL,但不让生成的 URL 包含范围的 /api。有什么办法可以解决这个问题吗?

routes.rb看起来有点像

scope "/api", shallow_path: "/api" do
    ... normal stuff here ...
end

如果我尝试使用其中一个助手,

meeting_url(@meeting, subdomain: "test")

它生成的网址是

http://test.domain.com/api/meetings/1

有没有办法让它剥离/api

4

1 回答 1

0

我不相信有内置的方法可以做到这一点。

但是,你在红宝石中,所以有很多方法可以做你想做的事。

由于您在自己的应用程序中,因此一种方法是做 monkey-patch String

class String
  def no_api
    self.gsub(/\/api/, '')
  end
end

meeting_url(@meeting, subdomain: 'test').no_api #=> http://test.domain.com/meetings/1

如果你觉得这很反感,你可以在辅助模块上ApplicationController或在辅助模块中定义一个方法:

def no_api(url)
  url.gsub(/\/api/, '')
end

等等等等等等

于 2013-06-07T07:57:20.133 回答