Rails 路线有时找不到错误
Posted
技术标签:
【中文标题】Rails 路线有时找不到错误【英文标题】:Rails route sometime got an error not found 【发布时间】:2022-01-04 11:12:43 【问题描述】:我的 Rails 路线有时会出现未找到错误并在几秒钟后自行解决。
undefined local variable or method owner_root_path' for #<Owner::SessionsController:0x00007f30408d46f0>
/myapp/app/controllers/owner/sessions_controller.rb:30:increate’
/ruby/2.5.0/gems/actionpack-5.1.6.2/lib/action_controller/metal/basic_implicit_render.rb:4:in send_action'
/ruby/2.5.0/gems/actionpack-5.1.6.2/lib/abstract_controller/base.rb:186:inprocess_action’
我的路线配置
# routes/owner.rb
Rails.application.routes.draw do
constraints subdomain: /^owner/ do
root to: "owner/top_pages#show", as: :owner_root
...
end
end
# application.rb
config.paths["config/routes.rb"] = %w(
config/routes/owner.rb
config/routes.rb
).map |relative_path| Rails.root.join(relative_path)
有人知道为什么会这样吗?
【问题讨论】:
这种情况多久发生一次? 它不会经常或周期性发生,大约 1-2 个月会再次发生 【参考方案1】:Rails 6.1 指南引入了draw
宏,可用于将大型路径文件拆分为较小的文件。你可以在这里阅读:Breaking up very large route file into multiple small ones
我不知道你的 Rails 版本是否支持这个宏。如果没有,那么您可以使用the source 自己轻松定义draw
方法。它会是这样的:
def draw(routes_name)
instance_eval(File.read(Rails.root.join("config/routes/#routes_name.rb")))
end
P.S:你一定要看看 the commit 介绍了这个方法/宏。
【讨论】:
以上是关于Rails 路线有时找不到错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Rails 找不到我的 jbuilder 模板或不渲染它?
如何解决 Rails 错误:找不到图像 - ../digest/md5.bundle