Rails 4:如何对通配符路由进行例外访问邮件预览?
Rails 4: how to make exceptions to wildcard routes so I an access mail previews?
在 routes.rb
我有以下内容:
get '*category/*location' => 'landing#show'
get '*category' => 'landing#show'
这使我无法在 /rails/previews
查看邮件预览,因为我被重定向,就像我输入 /painting
或 /painting/chicago
一样。
使用 Rails 路由指南,我尝试进行如下约束:
get '*category/*location' => 'landing#show', constraints: { category: /(?!rails)/, location: /(?!mailers)/ }
get '*category' => 'landing#show', constraints: { category: /(?!rails\/mailers)/ }
...然而,这似乎要么阻止一切 除了 /rails/mailers
(我现在可以打开邮件预览,但所有以前的动态行为都被破坏了) 或者它只是使这两行为空 - 不确定是哪一行。我只能说我现在可以访问邮件预览,但以前的动态行为已损坏。
我的另一个想法是,如果我不在开发中,就跳过通配符行:
unless Rails.env.development?
get '*category/*location' => 'landing#show'
get '*category' => 'landing#show'
end
不过,这似乎有点笨拙。它阻止我查看开发中的通配符行为,我只是想知道是否有更好的方法使用约束。有人可以帮我弄清楚我需要做什么才能使这些通配符起作用 除非 url 以/rails/server
结尾。
我尝试了@gregates 评论中的解决方案(在通配符上方设置 get '/rails/previews'
),但出现错误 uninitialized constant RailsController
。然而,这个建议让我想看看请求在正常工作时是如何处理的,所以我删除了通配符,只是正常访问邮件程序,看到了这个:
Processing by Rails::MailersController#index as HTML
所以我将以下内容添加到路由文件的顶部,现在一切正常:
# routes.rb
...
get '/rails/mailers' => 'rails/mailers#index'
...
在 routes.rb
我有以下内容:
get '*category/*location' => 'landing#show'
get '*category' => 'landing#show'
这使我无法在 /rails/previews
查看邮件预览,因为我被重定向,就像我输入 /painting
或 /painting/chicago
一样。
使用 Rails 路由指南,我尝试进行如下约束:
get '*category/*location' => 'landing#show', constraints: { category: /(?!rails)/, location: /(?!mailers)/ }
get '*category' => 'landing#show', constraints: { category: /(?!rails\/mailers)/ }
...然而,这似乎要么阻止一切 除了 /rails/mailers
(我现在可以打开邮件预览,但所有以前的动态行为都被破坏了) 或者它只是使这两行为空 - 不确定是哪一行。我只能说我现在可以访问邮件预览,但以前的动态行为已损坏。
我的另一个想法是,如果我不在开发中,就跳过通配符行:
unless Rails.env.development?
get '*category/*location' => 'landing#show'
get '*category' => 'landing#show'
end
不过,这似乎有点笨拙。它阻止我查看开发中的通配符行为,我只是想知道是否有更好的方法使用约束。有人可以帮我弄清楚我需要做什么才能使这些通配符起作用 除非 url 以/rails/server
结尾。
我尝试了@gregates 评论中的解决方案(在通配符上方设置 get '/rails/previews'
),但出现错误 uninitialized constant RailsController
。然而,这个建议让我想看看请求在正常工作时是如何处理的,所以我删除了通配符,只是正常访问邮件程序,看到了这个:
Processing by Rails::MailersController#index as HTML
所以我将以下内容添加到路由文件的顶部,现在一切正常:
# routes.rb
...
get '/rails/mailers' => 'rails/mailers#index'
...