我有一个子模块,它位于我的rails应用程序的根目录中。它实际上是另一个rails应用程序,我希望保留外部模块,以便它们可以用于我构建的其他应用程序。我目前正试图在子模块的视图文件夹中渲染部分,实际尝试渲染的类也在子模块内,但是对所述类的调用是在主视图中铁路应用。
它似乎抛出一个未定义的方法错误,它不理解"渲染"方法,即使建议是" _renderers"我印象中的方法也是轨道方法。因此,按照这种逻辑,我假设它确实理解了rails方法,它只是不喜欢渲染。
是否无法从子模块中调用render方法,或者是否存在某些需要解决的问题才能使用渲染?
模块调用render(root / submodule_name / app / controllers / submodule_name / application_controller.rb):
require 'ostruct'
module Pugin
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def self.get_component(component_name, model = nil)
if model.is_a?(Hash)
model = OpenStruct.new(model)
render :partial => "layouts/pugin/#{component_name}", locals: {object: model}
else
render :partial => "layouts/pugin/#{component_name}", locals: {object: model}
end
end
end
end
查看调用模块(root / app / views / people / show.html.slim):
= PUGIN.get_component('modules/profile-card', @person)
N.B PUGIN是一个解析为Module :: Class
的常量