【问题标题】:dynamic navigation links in main application and mounted rails engine主要应用程序中的动态导航链接和安装的导轨引擎
【发布时间】:2014-06-15 07:03:02
【问题描述】:

我正在开发一个使用 rails 引擎的项目,该引擎的视图将在主应用程序布局中使用。我的主要应用程序布局由导航链接组成,导航链接有点像面包屑,它为用户提供他们如何到达该特定页面的上下文。

所以我遇到的问题是:如果我访问已安装引擎的视图,该视图会在主应用程序布局内呈现视图。如何使作为主要应用程序一部分的导航链接动态化?

代码示例

module Engine
 class ApplicationController < ::ApplicationController

 end
end

Engines 应用程序控制器使用主应用程序应用程序控制器,这意味着主应用程序布局将用于呈现动作视图。

主应用应用布局(使用haml)

%html.no-js
 %head
  %title Main App
  %body                                                                
   .body-content
     %main
    = yield :navigation
      .main-content
        = yield
      = site_footer

如果您注意到我的应用程序布局,我有 yield :navigation。每当有 content_for 方法用于定义它时,就会呈现这种情况。例如:假设我们正在从我的一个主应用程序控制器呈现索引操作,haml 看起来像这样

index.html.haml

- content_for :navigation do
   %a.active{href: root_path}
   %a{href: some_path}
end

%h1 Index page.

所以我的主要问题是,如果我渲染引擎控制器操作视图,引擎不知道如何为主应用程序构建导航链接。有什么方法可以让主应用程序定义它并让引擎以某种方式呈现导航链接。

【问题讨论】:

  • 您必须提供一些代码示例 - 我可以为您提供有关 Rails 引擎的信息,但我不明白您想要实现什么?
  • RichPeck 我更新了问题。我尽量说清楚。

标签: ruby-on-rails ruby ruby-on-rails-4 rails-engines


【解决方案1】:

尝试在链接中使用 main_app 帮助器。

%a.active{href: main_app.root_path}

将始终引用您的主要应用根目录。同样

%a.active{href: my_engine.root_path}

将始终引用引擎根目录。

或者在下面的链接中说

如果您希望以类似的方式引用引擎内部的应用程序,请使用 main_app 帮助器:

&lt;%= link_to "Home", main_app.root_path %&gt;

如果您要在引擎中使用它,它总是会转到应用程序的根目录。如果您要停止 main_app “路由代理” > 方法调用,它可能会转到引擎或应用程序的 > 根目录,具体取决于调用它的位置。

有关详细信息,请参阅:

http://guides.rubyonrails.org/engines.html#routes

/rpkn

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多