1

アプリにロジック キャプチャを実装しようとしています。質問と回答をDBに保存するために、単純なTextCaptchaを足場にしました。

現在、これはinitializers/text_captcha.rbにあります

require 'text_captcha'
ActionController::Base.send(:include, TextCaptcha)

これは「lib/text_captcha.rb」にあります:

module TextCaptcha
    def self.included(base)
      base.send(:include, InstanceMethods)
    end
    module InstanceMethods
      def require_text_captcha
        @captcha = "hello!"
      end
    end
end

したがって、コメントコントローラーでは、ビューで@captchaにアクセスできるようにこれを持っています

before_filter :require_text_captcha

悪い点は、変更を加えるたびに webrick を再起動する必要があることです。これは間違った方法で行っているのでしょうか? 初期化子を取り除き、必要な場所で「text_captcha」を要求することができます...または、最初にやろうとしていた「models/text_capctha.rb」でこれを行う方法がありますが、理解できました。

4

2 に答える 2

1

ApplicationControllerRailsアプリではから拡張されているのでActionController::Base、次のことができますか?

require 'text_captcha'
class ApplicationController < ActionController::Base
  include TextCaptcha
end

app/controllers/application_controller.rb

于 2011-02-20T01:12:18.917 に答える
0

RailsがモデルをリロードするときにTextCaptchaが吹き飛ばされる場合、修正はto_prepare初期化子の代わりにモデルをロードするために使用することです。詳細については、次のリソースを参照してください。

公式ドキュメント:http ://api.rubyonrails.org/classes/ActionDispatch/Callbacks.html#method-c-to_prepare 短いブログ投稿: http: //www.cowboycoded.com/2011/01/28/reloading-rails- 3-engine-initializers-in-development /

于 2011-02-17T05:12:48.200 に答える