如何在rails中使用gem中的布局?

时间:2016-09-16 16:28:06

标签: ruby-on-rails ruby layout rubygems

我正在创建一个gem https://github.com/BDMADE/college-admin,这是一个简单的管理模板布局,我正在创建这个gem,为什么,我想在我的几个rails应用程序中重复使用。

我的欢迎控制人:

class WelcomeController < ApplicationController
layout 'college-admin/main'

  def index
    @hello = 'Hello Word'
  end
end

我的观点:

<h1>Welcome#index</h1>
<p>Find me in app/views/welcome/index.html.erb</p>
<%= @hello %>

但是,当我从demo项目的欢迎控制器调用时,它确实显示了此错误。

enter image description here

那么,我的问题是如何在这个控制器中使用我的布局(放在college-admin gem中)? 我应该对college-admin gem进行任何更改以显示它的布局吗?

2 个答案:

答案 0 :(得分:0)

你需要一个engine,它是一个增加了集成到Rails堆栈中的gem。

  

发动机可以被认为是提供的微型应用   其主机应用程序的功能。一个Rails应用程序是   实际上只是一个“增压”引擎,使用Rails :: Application   class从Rails :: Engine继承了很多行为。

您可以使用以下命令创建新引擎:

bundle exec rails plugin new <NAME> --mountable --full --dummy-path=spec/dummy

答案 1 :(得分:0)

我得到了解决方案: 只需在lib / college / admin.rb上使用它:

require "college/admin/engine"

之前:

require "college/admin/version"

module College
  module Admin
    # Your code goes here...
  end
end

改变之后:

require "college/admin/version"
require "college/admin/engine"

module College
  module Admin
    # Your code goes here...
  end
end

来自控制器: layout 'main'