ChatGPT解决这个技术问题 Extra ChatGPT

Rails:从控制台检查路径助手的输出

Rails 使用命名路由定义了一堆魔法,为您的路由创建助手。有时,特别是对于嵌套路由,跟踪给定路由助手方法调用将获得的 URL 可能会有点混乱。是否可以使用 Ruby 控制台查看给定的辅助函数将生成什么链接?例如,给定一个像 post_path(post) 这样的命名助手,我想看看生成了什么 URL。


t
troutwine

您可以直接用 rake routes 显示它们。

在 Rails 控制台中,您可以调用 app.post_path。这将适用于 Rails ~= 2.3 和 >= 3.1.0。


只是在我自己的评论的后续行动中,如果您正在使用,这似乎可以从 rails 3 控制台进行。首先,通过调用 app.get "/" 之类的东西将虚假请求粘贴到您的应用程序对象中,然后只需 instance_eval 所需的方法,因为它们现在默认受到保护。类似于:app.instance_eval{ post_path(post) }
Chubas 上面的评论在 Rails 3 中工作。这在编写测试时非常有用,所以我不必等待 1 分钟来发现路线不正确。此外,测试 get 和 post 调用也很棒。您无需先调用 app.get。
app.teh_path 在 Rails 4.0 中仍然有效,可用于将引擎路径与主应用程序路径分开。
如果您要安装引擎,例如 mount Spree::Core::Engine, :at => '/',那么您将通过引擎名称访问路径,例如 app.spree_core_engine.some_path。或者,如果“engine_name”配置为不同的名称,例如 in this code,那么您将执行 app.spree.some_path
我必须像这样添加 host 参数:app.article_url(my_article, host: 'mydomain.com')
C
Chloe

你也可以

include Rails.application.routes.url_helpers

从控制台会话内部访问帮助程序:

url_for controller: :users, only_path: true
users_path
# => '/users'

或者

Rails.application.routes.url_helpers.users_path

这比上述解决方案IMO容易得多
在我看来,这是对原始问题的正确答案
这应该是IMO的最佳答案
我懒得记住这一点,所以我每隔几天就会回到这里复制/粘贴。谢谢。
您不能也直接从控制台引用 url_helpers,例如 Rails.application.routes.url_helpers.users_path
T
The Hungry Dictator

在 Rails 控制台中,变量 app 保存一个会话对象,您可以在该对象上调用路径和 URL 助手作为实例方法。

app.users_path

D
Deepak Mahakale

您可以随时在控制台中检查 path_helpers 的输出。只需将助手与 app 一起使用

app.post_path(3)
#=> "/posts/3"

app.posts_path
#=> "/posts"

app.posts_url
#=> "http://www.example.com/posts"

A
Arup Rakshit

请记住,如果您的路线是命名空间的,例如:

product GET  /products/:id(.:format)  spree/products#show

然后尝试:

helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get)

输出

Spree::Product Load (0.4ms)  SELECT  "spree_products".* FROM "spree_products"  WHERE "spree_products"."deleted_at" IS NULL  ORDER BY "spree_products"."id" ASC LIMIT 1
=> "<a data-method=\"get\" href=\"/products/this-is-the-title\">test</a>" 

感谢您提供 spree 示例,您是从天而降的天使。
C
Chad M

对于 Rails 5.2.4.1,我必须

app.extend app._routes.named_routes.path_helpers_module
app.whatever_path

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅