2011-12-31 17 views
8

私は、オープンソースプロジェクトに貢献しようとしていると私はに提出する必要があるフォームのカップルを処理するためのコントローラを必要としています。Ruby on Railsの宝石にコントローラを含めるには?

を私はapp/controllers/gemname/my_controller.rbと呼ばれる宝石内のディレクトリ内のこれらのコントローラを作成しました。

しかし、コントローラにアクセスしようとすると、ロードされていないように見えます(NonExistentControllerのような名前を入力した場合と同じように名前エラーが発生します)。

コントローラーをどのようにロードするのですか?

ありがとうございます!

+1

'MyController'は' Gemname'モジュールの中で定義されていますか?もしそれがレールでなければ 'app/controllers/my_controller.rb'に置かれると期待します。 –

+0

このガイドをお読みくださいhttp://guides.rubyonrails.org/plugins.html – taro

+0

KL-7、Gemnameモジュールの内部でMyControllerを定義するにはどうすればよいですか? taro、情報ありがとう。私は、それは私が探している情報が含まれていませんでした。 –

答えて

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

ありがとうございます! –

+0

ありがとう!あなたが言及した 'ガイドリンク'が大好きです。 –

+0

私は昨日すべてこれで苦労していました。今日はずっと楽になると思う。ありがとう! – Rimian

0

Brandonの答えのガイドはとても役に立ちますが、レール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
(> 3.0をレール)

Railsの公式ガイド(エッジ):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html

旧enginex:
https://github.com/josevalim/enginex
(3.0のみ)

関連する問題