gpt4 book ai didi

ruby-on-rails - 从可安装引擎覆盖主机应用程序的根路由

转载 作者:行者123 更新时间:2023-12-04 16:12:04 25 4
gpt4 key购买 nike

我正在编写一个可安装的 Rails 3 引擎,并将我的引擎的路由与主机应用程序的路由结合起来。但是,主机应用程序的路由优先于我引擎的路由。有没有办法覆盖主机应用程序的路由(特别是根路由)?

这是我的引擎在 my_enging/config/routes.rb 中的路线:

MyEngine::Engine.routes.draw do
root :to => "home#index"
end

# Mount engine routes to host application
Rails.application.routes.draw do
mount MyEngine::Engine, :at => "/"
end

这是 rake routes 的结果, 主机的根位于顶部:
root  / welcome#index
my_engine / MyEngine::Engine
root / home#index

Spree是一个可以做到这一点的 gem ,但我一直无法找到他们是如何实现这一点的。

最佳答案

人们更有可能做相反的事情,所以我不明白你为什么需要这个,因为应该能够覆盖引擎路线。实际上我不知道如何强制引擎覆盖应用程序路由,但是:

Spree 正在通过 eval_block 以某种方式动态添加路由, 我相信。

您可以跳过 root to:以及应用程序中所有不需要的路由,然后引擎路由就会出现。不要同时保留它们。我在您的应用程序中没有看到指定的 root,但是 我刚刚进行了一个实验,一切正常!

W12::Engine.routes.draw do
root to: 'details#index'
end

MyCarsApplication.routes.draw do
mount Common::Engine => "/"
end

而且只有一条路线:
root / details#index

This post about creating not isolated engines也可能有帮助。

如果您找到确切答案,请发布。

关于ruby-on-rails - 从可安装引擎覆盖主机应用程序的根路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023117/

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