【问题标题】:Rails 4 custom path helperRails 4 自定义路径助手
【发布时间】:2015-08-11 16:52:10
【问题描述】:

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

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

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

我知道路径助手是动态生成的,但我不知道从哪里开始......我什至找不到路径助手是在哪个模块中生成的。

感谢您提供的任何帮助!

【问题讨论】:

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


    【解决方案1】:

    简短回答:没有,据我所知。

    我找不到任何东西可以让 Rails 拦截的路线与助手给你的路径不同。我认为 Rails 在 .htaccess 重写方面表现不佳。

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

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

    【讨论】:

    • DoubleFelix,是的,我确实需要路径中的文件夹名称。我必须在我的 public_html 目录中使用符号链接来链接到我的 rails 应用程序的基本文件夹。
    • 很抱歉,但我认为您的设置有问题。您的路由情况非常复杂,在某种程度上我认为 rails 无法弥补。
    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多