【问题标题】:Include alchemy_cms engine in existing rails app - routing error在现有的 Rails 应用程序中包含 alchemy_cms 引擎 - 路由错误
【发布时间】:2014-03-14 21:36:23
【问题描述】:

我正在尝试在现有应用程序中使用 alchemy-cms。我有一个应用程序布局,包括一个链接到我页面中的多个控制器的菜单栏。

我已经安装了 alchemy-cms 作为引擎,效果很好。

在我的应用程序布局中渲染使用 Alchemy 创建的页面时,我收到路由错误,因为我的其他控制器在 Alchemy 引擎及其渲染站点的 page_controller 中不可用(至少这似乎是个问题)。

我想做的是让 Alchemy 引擎创建/渲染一些页面,而一些页面由其他控制器创建。这不可能吗?

或者,更一般地说:是否可以从已安装引擎内的主应用程序访问路由?

【问题讨论】:

    标签: ruby-on-rails-4 rails-routing rails-engines alchemy-cms


    【解决方案1】:

    我想做的是让 Alchemy 引擎创建/渲染一些页面,而一些页面由其他控制器创建。这不可能吗?

    是的。

    您应该将 Alchemy 挂载到您的路线文件的最新位置。 (在您的自定义路线之后,因为 Alchemy 带有一条包罗万象的路线)

    这意味着如果您的自定义路线之一匹配 - 它将被使用。如果之前没有其他匹配项,则将使用 Alchemy 路线。

    # routes.rb
    MyApp::Application.routes.draw do
      ... all your custom routes ...
      mount Alchemy::Engine => '/'
    end
    

    或者,更一般地说:是否可以从主要访问路线 在已安装的引擎内应用?

    我认为您的问题不是如何从 Alchemy 引擎中访问主应用程序路由,因为您是在主应用程序中工作,而不是在 Alchemy 中工作 - Alchemy 只是作为宝石出现。

    您始终可以像这样访问您的主应用程序路由对象:

    main_app.routes
    

    或网址助手:

    main_app.new_photo_path
    

    您可以使用此助手访问引擎路由(在本例中为 Alchemy):

    alchemy.routes
    

    【讨论】:

    • 谢谢,是的,这就是我需要的信息。但是是的,“如何从 Alchemy 引擎中访问主要应用程序路由”,因为在页面编辑器中呈现我的应用程序布局会导致该错误。但是使用 main_app.url_for 我创建了一个助手来避免这种情况......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2011-09-12
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多