【问题标题】:rails routing duplicates path导轨路由重复路径
【发布时间】:2015-10-02 10:54:47
【问题描述】:

我有一个非常简单的问题,即采用 rails 2 路线并使其与 rails 4 一起使用。rails 2 版本是这样的:

map.token '/sessions/token', :controller => 'sessions', :action => 'token'

我已将其更改为:

get '/sessions/token', to: 'sessions#token', as: '/token'

对于 rails 4。问题是当我转到 /sessions/token 时,它会立即重定向到 /sessions/token/sessions/token 并给出 404

我在令牌方法中添加了byebug,但请求在重定向之前从未到达那里。我很早就在应用程序控制器中添加了它,但我到达了下一个功能停止工作的地步。

请求https://delete-me.domain.org/sessions/token时日志会产生这个:

[delete-me] Started GET "/sessions/token" for 127.0.0.1 at 2015-10-02 05:44:27 -0500
[delete-me] Processing by SessionsController#token as HTML
[delete-me] Redirected to http://delete-me.domain.org/sessions/token/sessions/token
[delete-me] Filter chain halted as :ensure_proper_protocol rendered or redirected
[delete-me] Completed 302 Found in 114ms (ActiveRecord: 5.8ms)

我认为它给出了:ensure_proper_protocol error,因为它从https 重定向到http。我不知道为什么会这样。也许有人遇到过类似的问题,他们可以启发我。

【问题讨论】:

  • 重定向与 session_controller.rb 中的这行代码有关:>> 如果我将其注释掉,一切正常...

标签: ruby-on-rails routing


【解决方案1】:
#config/routes.rb
resources :sessions do
   get :token, on: :collection #-> /sessions/token (sessions#token controller action)
end

【讨论】:

  • 谢谢...尝试此操作后仍然遇到同样的问题 :(
  • [jc] 由 SessionsController#token 处理为 HTML [jc] 重定向到 jc.net.org/sessions/token/sessions/token [jc] 过滤器链停止为:ensure_proper_protocol 呈现或重定向 [jc] 完成 302 发现在 75 毫秒(ActiveRecord:10.3 ms) [jc] 在 2015-10-20 22 :37:52 +0700 开始 GET "/sessions/token/sessions/token" 为 127.0.0.1 [jc] ActionController::RoutingError (没有路由匹配 [GET] "/会话/令牌/会话/令牌“):
  • 我在 session_controller.rb 中追踪到这一行的重定向:codessl_allowed :destroy, :index if USE_SSL
  • 看起来你在控制器动作内部重定向,是这样吗?
  • 哦,好吧 - 那是什么?您正在使用 SSL?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2016-12-09
  • 2018-11-20
相关资源
最近更新 更多