Rails 4自定义路径助手

时间:2015-05-29 00:13:06

标签: ruby apache ruby-on-rails-4 subdomain helpers

我想在Rails 4中自定义路径助手。

我有一个包含多个子域的Site5网站(使用Apache服务器)。我在.htaccess文件中重写了规则,将文件夹名称添加到网址中。例如

cs1337.mysite.com/login

被重写为

cs1337.mysite.com/cs1337/login

在routes.rb中,我在routes.rb中添加了一个范围:

scope '/cs1337' do
  get '/login', to: 'sessions#new', as: :login
  # etc.
end

这给了我正确的路由。一切正常,但令人讨厌的是,我所有的道路助手都有' / cs1337'前缀,这是不必要的,因为.htaccess重写规则将其重新添加。例如,

login_path # => /cs1337/login

仅限

login_path # => /login

是必要的。

我想覆盖所有路径助手以使用类似

之类的东西来去除前缀
def <override all path helpers> 
  path = super
  path.gsub(%r{^/cs1337}, '')
end

我知道路径助手是动态生成的,但我无法弄清楚从哪里开始...我甚至无法找到生成路径助手的模块。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

简短回答:不,据我所知。

我找不到任何可以让你的路线Rails拦截与帮助者给你的路径不同的东西。我不认为Rails可以很好地重写.htaccess重写。

您是否需要文件夹名称在路径中?如果没有,我会删除scope '/cs1337' do并使用类似this StackOverflow post的内容来执行特定于域的路由。

如果您需要,我建议最终用户看到“cs1337.mysite.com/cs1337/path”。