孤立的引擎(doorkeeper)--使用来自main_app的辅助方法。[英] Isolated engine (doorkeeper) - use helper methods from the main_app

本文是小编为大家收集整理的关于孤立的引擎(doorkeeper)--使用来自main_app的辅助方法。的处理方法,想解了孤立的引擎(doorkeeper)--使用来自main_app的辅助方法。的问题怎么解决?孤立的引擎(doorkeeper)--使用来自main_app的辅助方法。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我希望我的门卫视图使用应用程序布局:

https://github.com/applicake/doorkeeper/wiki/Customizing-views

这包含来自主应用程序的路由和辅助方法.

对于路由,我可以在路径前添加 main_app 前缀,但对于辅助方法,我收到以下错误:

undefined method `is_active?' for #<ActionDispatch::Routing::RoutesProxy:0xade808c>

<li class="<%= main_app.is_active?("high_voltage/pages", "api") %>"><%= link_to t('developers'), page_path('api') %></li>

这是为什么?助手在 app/helpers/application_helper.rb

推荐答案

如果您生成了视图并将它们放在 app/views/doorkeeper/** 中,那么引擎仍然使用门卫控制器.

要解决这个问题,您必须将您的助手包含到引擎的 ApplicationController 中.假设你有这样的东西:

app/helpers/application_helper.rb

module ApplicationHelper
  def my_helper
    "hello"
  end
end

app/views/doorkeeper/applications/index.html.erb

<p>
  <%= my_helper %>
</p>

在您将应用程序助手包含到门卫控制器中之前,这将不起作用.所以在 config/application.rb:

class YourApp::Application < Rails::Application
  config.to_prepare do
    # include only the ApplicationHelper module
    Doorkeeper::ApplicationController.helper ApplicationHelper

    # include all helpers from your application
    Doorkeeper::ApplicationController.helper YourApp::Application.helpers
  end
end

当您想要自定义布局时,这是类似的配置.

本文地址:https://www.itbaoku.cn/post/786763.html