我正在使用Rails 5.2.3和ruby 2.4.0p0
我已经有一个Rails应用程序,现在我创建了一个具有某些功能的新Rails引擎,并将其包含在主应用程序中为:
在gemfile中:
gem 'myengin', path: '/home/vidur/rails_apps/myengin'
用于路由:
mount Myengin::Engine => "/myengin", as: "myengin"
我想在主应用程序的布局内显示已安装引擎中的页面,为此,我在已安装引擎的应用程序控制器中将主应用程序的应用程序控制器扩展为:
module Myengin
class ApplicationController < ::ApplicationController
protect_from_forgery with: :exception
end
end
完成此操作后,它将呈现主应用程序的布局,但会给出路由错误,它不会在这些页面上检测到主应用程序的路由并显示路由未定义错误,但是它们存在于routes.rb中在主应用程序中。 示例:
undefined local variable or method `tukabank_cart_path' for #<#<Class:0x00000004e353b0>:0x00000004e237f0>
在主应用程序route.rb中定义为:
resource :tukabank_cart, only: [:show]
对于其他路线,
所有定义为_path
的变量都会触发未定义的错误,但是它们已定义。
为什么在已安装的引擎页面上未检测到路由?有没有办法解决,还是应该使主应用程序的布局与主应用程序的_path
变量保持一致?