升级到 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 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"