使用url帮助程序删除url范围段

时间:2013-06-06 22:54:17

标签: ruby-on-rails-3 angularjs rails-routing

我正在编写一个使用AngularJS的应用程序,因此应用程序设置为将所有请求路由到角度接管的主要主页。然后在api范围内定义所有路径,其中angular用于检索数据。但是,如果用户导航到具有普通URL的页面,那么当它重定向到主页时,它会保留该角度然后用于加载正确状态的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

1 个答案:

答案 0 :(得分:0)

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

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

一种方法,因为你在自己的应用程序中,是做猴子补丁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

等。等等。