升级到 Rails 6.1 后的 Rails 路线问题

Posted

技术标签:

【中文标题】升级到 Rails 6.1 后的 Rails 路线问题【英文标题】:Rails route issue after upgrading to rails 6.1 【发布时间】:2021-03-30 15:24:46 【问题描述】:

升级到 Rails 6.1 后,出现以下错误:

undefined method `find_script_name' for nil:NilClass

在这种情况下,正在使用的路线是root_path,但也为许多其他路线使用! routes.rb 如下(在删除所有其他路由定义后尝试这样)

Rails.application.routes.draw do
  root 'home#index'
end

我在网上找到的唯一相关内容是this commit。有人知道可能出了什么问题吗?

我正在运行 ruby​​ 2.7.2

【问题讨论】:

方法find_script_name在哪里?是在application_controller.rb 还是什么?您最近是否还添加了任何新的宝石或任何东西? 它在我在原始帖子中链接的 Rails 核心(动作包)中!我在尝试升级到 rails 6.1 后看到了这个! @HungryCoder 刚刚遇到了同样的问题。你找到解决办法了吗?似乎与视图中使用的路径助手有关。 我已经切换回6.0.4.1,我摆脱了这个问题和其他一些问题 【参考方案1】:

这看起来像是当前版本的 rails 6.1 中的一个错误

https://github.com/rails/rails/issues/42218

当前的解决方法是在视图内的所有路径助手调用前加上:

Rails.application.routes.url_helpers.

所以 session_path 变成 Rails.application.routes.url_helpers.session_path

【讨论】:

以上是关于升级到 Rails 6.1 后的 Rails 路线问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Webpacker 使用 Rails 6.1 安装 Alpine JS 3

凭证文件未在 Amazon Linux 上读取 Rails 6.1

Rails 6.1 如何将文件渲染到页面模板中

Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"

Heroku 推送错误:“无法检测到 rake 任务”(Rails 6.1)

如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?