gpt4 book ai didi

ruby-on-rails - 在 Rails 引擎规范中使用正确的 url_for 方法

转载 作者:行者123 更新时间:2023-12-03 14:43:19 25 4
gpt4 key购买 nike

我在 Rails 引擎中有一个请求规范。呈现的 View 调用路由并传入哈希,即 projects_path(:scope => "user") .像这样的路由最终会调用 url_for , 但是 url_for在很多地方都有定义。在主应用程序(根级别)中运行应用程序或运行请求规范时,调用链结束于 ActionView::RoutingUrlFor#url_for ;然而,当在引擎中运行规范时,调用链结束于 ActionView::Helpers::UrlHelper#url_for .

在 Rails 4 中,url_for UrlHelper 中定义的方法不再接受哈希参数,所以我留下了这个错误

 Failure/Error: visit projects_opportunity_intakes_path
ActionView::Template::Error:
arguments passed to url_for can't be handled. Please require routes or provide your own implementation

我想弄清楚的是为什么它会退回到 ActionView::Helpers::UrlHelper当我在我的引擎中运行规范时,但在任何其他情况下都没有。这是相当令人困惑的。让我印象深刻的一件事是:当我在 View 中设置断点并评估 self.class 时, 我通常会得到继承自 ActionView::Base 的东西,但是当我从我的引擎运行规范时,该类不会继承任何东西。我不知道这是否相关,但它似乎很可疑。

有人经历过吗?知道解决方法吗?我的模块会被包含在错误的顺序中吗? spec_helper 中有什么东西吗?或者在我可以做的虚拟应用程序初始化以确保使用正确的模块?

最佳答案

我在更新到 Rails 4 时遇到了同样的问题,我发现问题出在包含以下行的模型上:

include Rails.application.routes.url_helpers

尝试在您的应用程序中查找包含 url_helpers 的代码某处。删除该行应该有助于解决问题。

关于ruby-on-rails - 在 Rails 引擎规范中使用正确的 url_for 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com