2011-12-31 87 views
8

我試圖促成一個開源項目,我需要一個控制器來處理了幾個需要在提交表單。如何使用Ruby on Rails gem包含控制器?

我創建了一個叫做app/controllers/gemname/my_controller.rb寶石裏面的目錄裏面這些控制器。

但是,當我嘗試訪問控制器時,似乎沒有加載(我得到一個名稱錯誤,就像我輸入了像NonExistentController類似的東西)。

如何加載我的控制器的寶石?

謝謝!

+1

您的'MyController'是否在'Gemname'模塊中定義?如果不是rails,它會期望它被放置在'app/controllers/my_controller.rb'中。 – 2011-12-31 16:29:52

+0

請閱讀本指南http://guides.rubyonrails.org/plugins.html – taro 2011-12-31 16:48:59

+0

KL-7,如何在Gemname模塊內定義MyController?芋頭,感謝您的信息。我做了,但沒有包含我正在尋找的信息。 – 2011-12-31 18:13:42

回答

10

我們假設你的寶石叫MyGem,你有一個名爲SuperController的控制器,你想在應用中使用它。你的控制器應定義爲:

module MyGem 
    class SuperController < ApplicationController 
    def whatever 
     ... 
    end 
    end 
end 

並在創業板上市的目錄應該住在app/controllers/my_gem/super_controller.rblib文件夾下)。檢查source for Devise,因爲他們做同樣的事情。

[編輯]您可能從A Guide To Starting Your Own Rails Engine Gem瞭解到關於您當前項目的一些信息。

+0

非常感謝! – 2012-05-06 02:42:48

+0

非常感謝!我喜歡你提到的'guide link'。 – 2013-01-31 06:04:33

+0

昨天我一直在努力。我認爲今天會更容易。謝謝! – Rimian 2013-04-25 23:22:52

0

布蘭登答案中的指南是非常有用的,但只適用於軌道3.0。從3.1開始,你可以創建一個插件。就像這樣:rails plugin new my_engine --mountable

請參閱本實用的指南:
http://namick.tumblr.com/post/17663752365/how-to-create-a-gemified-plugin-with-rails-3-2-rspec
(>的Rails 3.0)

Rails的官方指南(邊緣):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html

老enginex:
https://github.com/josevalim/enginex
(僅限3.0)