我正在尝试为开源项目做贡献,我需要一个控制器来处理需要提交的几种表单。
我在gem中名为app/controllers/gemname/my_controller.rb
的目录中创建了这些控制器。
然而,当我尝试访问控制器时,似乎没有加载(我得到一个名称错误,就像我输入类似NonExistentController的东西)。
如何使用gem加载我的控制器?
谢谢!
答案 0 :(得分:10)
假设您的gem名为MyGem
,并且您有一个名为SuperController
的控制器,您希望在该应用中使用它。您的控制器应定义为:
module MyGem
class SuperController < ApplicationController
def whatever
...
end
end
end
并且在您的gem目录中,它应该位于app/controllers/my_gem/super_controller.rb
( not 位于lib
文件夹下)。查看source for Devise,因为他们做同样的事情。
[编辑]您可以从A Guide To Starting Your Own Rails Engine Gem了解有关当前项目的内容。
答案 1 :(得分:0)
Brandon答案中的指南非常有用,但仅适用于rails 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
(&gt; Rails 3.0)
Rails官方指南(边缘):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html
旧引擎x:
https://github.com/josevalim/enginex
(仅限3.0)