Getting RuntimeError: "In order to use #url_for, you must include routing helpers explicitly" when I've already included them

Getting RuntimeError: "In order to use #url_for, you must include routing helpers explicitly" when I've already included them

在控制器中,我尝试运行此代码用于当已经登录的用户偶然发现注册页面时

def index
  if current_user
    redirect_to homebase_url #should provide url to home for logged in users
  end
end

我已经完成了 rails 错误消息所说的,并添加了:include Rails.application.routes.url_helpers 到包含控制器 class。虽然仍然收到此错误。绝对不想出于遗留目的将 URL 硬编码到那里。谢谢

删除 include Rails.application.routes.url_helpers 声明,不需要它,除非它在帮助程序之类的东西中。默认情况下,路由包含在控制器中。将它包含在模型中或 controller/initializer(路由在初始化程序之前加载)违反 MVC 体系结构,可能会导致不需要的行为。

我建议使用 homebase_path 而不是 homebase_url

例如当查看

console.log(window.location.pathname) // => "/questions/41903124/getting-r..."
console.log(window.location.host) // => "whosebug.com"

path是域名(主机)后面的东西。

完整的 URL(在您的情况下 homebase_url)需要 host 和路径。在开发中获得主机有点尴尬,因为它在生产中的价值与在开发中的价值不同。